Ga naar inhoud

[php] BB parser


anoniem

Aanbevolen berichten

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( '&gt;:)', ':)', '|:(', ":'(", ':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("&lt;", "<", $input); $input = str_replace("&gt;", ">", $input); $input = str_replace("&quot;", '"', $input); $input = str_replace("&", "&", $input); $input = str_replace('\\"', '\"', $input); ob_start(); @highlight_string($input); $output = ob_get_contents(); ob_end_clean(); } $output = str_replace("]", "&#93", $output); $output = str_replace("[", "&#91", $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]
Link naar reactie
[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.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...