PDA

View Full Version : probleme preg_replace


Magi-X
16 avril 2004, 14h27
Hello, bon j'utilise les bbcode, et j'en suis au tags xxx .

J'ai creer une fonction qui colorie les tags php:

# Functie voor de php code
function phpHighlight($code){

$code = "<?php\n".$code."\n?>";
$code = stripslashes($code);
$code = highlight_string($code, true);
$code = explode('<br />', $code);

$text = "<div style='margin:0px 5% 0px 5%;' class='smallfont'><b>PHP :</b><hr color=#5C7099 size=1 /><table>";

for ($x=0; $x < sizeof($code);$x++)
$text .= $code[$x]."<BR>";

$text .= "</table><hr color=#5C7099 size=1 /></div>";
return $text;

}

Et comme vous savez tous avec le preg replace on fait par exemple pour le BBcode [b]

$bericht = preg_replace("/\[b\](.*?)\[\/b\]/si", "<!-- BBCode Start --><B>\\1</B><!-- BBCode End -->", $bericht);

donc on utlise le '\\1' pour filtrer le text entre les tags !

Et c'est ce que je veux faire avec mes tags PHP .. seulement je n'arrive pas a le mettre dans une fonction .. j'ai déjà essayer c truc si:

$bericht = preg_replace("/\[PHP\](.*?)\[\/PHP\]/si", phpHighlight("\\1"), $bericht);

$bericht = preg_replace("/\[PHP\](.*?)\[\/PHP\]/si", phpHighlight('\\1'), $bericht);

$bericht = preg_replace("/\[PHP\](.*?)\[\/PHP\]/si", phpHighlight(\\1), $bericht);

Mais rien qui marche, l'un prend comme text, et l'autre donne des erreur . Et la je n'ai plus didee :(

Quelqu'un a t'il un soluce ??? :D

Magi-X
16 avril 2004, 15h09
M'enfin c'est quand meme grave ... je cherche pendant des heur , je ne trouve pas, et quand je post mon probleme je trouve :rolleyes:

bon voila pour ceux qui ca interesse, faut le faire de cette maniere :

$bericht = preg_replace_callback("#\[PHP\](.*?)\[\/PHP\]#si", create_function('$matches', 'return phpHighlight($matches[1]);'), $bericht);