anoniem Geplaatst: 11 januari 2003 Delen Geplaatst: 11 januari 2003 Ik ben bezig met een kleine bb parser voor m'n site, maar nu kom ik op een probleem :( Ik zoek de tekst tussen [ code ] tags op, en die duw ik in een functie. Alleen het lukt me niet om die string te bewerken :S Dit is de code. [code:1:a8871d7c14]<? $smilie_find = array( '>:)', ':)', '|:(', ":'(", ':P', ); $smilie_replace = array( '<img class="smilie" src="../pics/smilies/devil.gif">', '<img class="smilie" src="../pics/smilies/smile.gif">', '<img class="smilie" src="../pics/smilies/frusty.gif">', '<img class="smilie" src="../pics/smilies/cry.gif">', '<img class="smilie" src="../pics/smilies/puh2.gif">', ); function code($input, $numbers, $code) { global $smilie_find, $smilie_replace; //$input = trim(str_replace("<br />", "\n", $input)); for($i=0; $i < count($smilie_find); $i++) { $input = str_replace($smilie_replace["$i"], $smilie_find["$i"], $input); //echo $smilie_replace["$i"] . " ---- " . $smilie_find["$i"] . "<br>\n"; } if($code == 0) $output = $input; elseif($code == 1) { $input = str_replace("<", "<", $input); $input = str_replace(">", ">", $input); $input = str_replace(""", '"', $input); $input = str_replace("&", "&", $input); $input = str_replace('\\"', '\"', $input); ob_start(); @highlight_string($input); $output = ob_get_contents(); ob_end_clean(); } $output = str_replace("]", "]", $output); $output = str_replace("[", "[", $output); return $output; } function bbcode($input) { global $smilie_find, $smilie_replace; $input = nl2br(htmlspecialchars(trim($input))); for($i=0; $i < count($smilie_find); $i++) $input = str_replace($smilie_find["$i"], $smilie_replace["$i"], $input); $input = eregi_replace('\[code\](.*)\[/code\]', code('\\1', 1, 1), $input); $input = eregi_replace('\[php\](.*)\[/php\]', code("\\1", 1, 1), $input); $input = eregi_replace('\[no\](.*)\[/no\]', code("\\1", 0, 0), $input); $input = preg_replace('!\[b\](.+)\[/b\]!', "<b>\\1</b>", $input); $input = preg_replace('!\[u\](.+)\[/u\]!', "<u>\\1</u>", $input); $input = preg_replace('!\[i\](.+)\[/i\]!', "<i>\\1</i>", $input); $input = preg_replace('!\[s\](.+)\[/s\]!', "<s>\\1</s>", $input); $input = preg_replace('!\[li\](.+)\[/li\]!', "<li>\\1</li>", $input); $input = preg_replace('!\[quote\](.+)\[/quote\]!', "<blockquote>Quote:<hr>\\1</hr></blockquote>", $input); $input = preg_replace('!\[quote=(.+)\](.+)\[/quote\]!', "<blockquote>Quote van \\1<hr>\\2</blockquote>", $input); $input = preg_replace('!\[url\](.+)\[/url\]!', "<a href=\"\\1\">\\1</a>", $input); $input = preg_replace('!\[url=(.+)\](.+)\[/url\]!', "<a href=\"\\1\">\\2</a>", $input); $input = preg_replace('!\[img=(.+)\](.+)\]!', "<img src=\"\\1\">", $input); return $input; } echo bbcode($_POST["bericht"]); ?> <form name="form1" method="post" action=""> <p> <textarea name="bericht" cols="80" rows="8" id="bericht"><? echo htmlspecialchars($_POST[bericht]); ?></textarea> </p> <p> <input type="submit" name="Submit" value="Submit"> </p> </form>[/code:1:a8871d7c14] Quote Link naar reactie
anoniem Geplaatst: 11 januari 2003 Auteur Delen Geplaatst: 11 januari 2003 [code:1:ec8127b42d]$input = eregi_replace('\[code\](.*)\[/code\]', code('\\1', 1, 1), $input); $input = eregi_replace('\[php\](.*)\[/php\]', code("\\1", 1, 1), $input); $input = eregi_replace('\[no\](.*)\[/no\]', code("\\1", 0, 0), $input);[/code:1:ec8127b42d] Met eregi_replace kun je alleen 'letterlijk' vervangen. Dus geen PHP code als vervanging instellen. Met perl-regexps kan dat wel. Dan moet je wel: [code:1:ec8127b42d]$input = preg_replace('/\[code\](.*)\[/code\]/e', code('\\1', 1, 1), $input);[/code:1:ec8127b42d] Ik geef de /e 'modifiër' mee, omdat PHP weet dat hij het tweede gedeelte als PHP op moet vatten. Quote Link naar reactie
anoniem Geplaatst: 11 januari 2003 Auteur Delen Geplaatst: 11 januari 2003 mja, ik vat het. maar ik krijg een vage error: Warning: Unknown modifier 'c' in c:\apache\htdocs\site\inc\minibb.parser.inc.php on line 170 Warning: Unknown modifier 'c' in c:\apache\htdocs\site\inc\minibb.parser.inc.php on line 170 2x die error bij je preg Quote Link naar reactie
anoniem Geplaatst: 13 januari 2003 Auteur Delen Geplaatst: 13 januari 2003 Waarom gebruik je geen database? Quote Link naar reactie
anoniem Geplaatst: 13 januari 2003 Auteur Delen Geplaatst: 13 januari 2003 [quote:ce8532230d="triloxigen.nl"]Waarom gebruik je geen database?[/quote:ce8532230d]Is dat de nieuwste database of zo? Met ingebouwde smilie-parser en code-highlighter? :-? :roll: Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen