bonjour j ai ce code
-
- $texte = str_replace ('[code]','<div id="code">highlight_file('', $texte);
- $texte = str_replace ('
','')</div>', $texte);
[/code]
mais quand j ai un code entre deux balise code, c am affiche highlight_file(' le code ')
quelqu un peux t il m aiguillé pour résoudre ce probleme?
merci d avance
Heu... ouais.
J'ai envie de dire que c'est normal.
T'as un problème de concaténation : ta fonction highlight_file n'est pas interprété par PHP car elle est "lue" comme une chaine de caractère par PHP.
C'est comme si tu faisais :
- <?php
- echo 'pom strlen(\'blu\');';
- ?>
Ben ca, ca n'affichera pas la longueur de la chaine, ca affichera "pom strlen('blu');".
Il faudrait faire :
- <?php
- echo 'pom '.strlen('blu');
- ?>
(pour que la concaténation soit prise en compte et que ca affiche "pom 3")
Mais bon, ca c'est une chose.
Le problème, c'est que dans ton cas, ca ne t'aidera pas, car pour faire ce que tu cherches à faire, un simple str_replace ne suffit pas.
Il faut faire une expression régulière avec un preg_replace_callback.
Je te conseille de lire le cours sur les expressions régulières.