euh bah nan justement le truc c'est que je laisse le choix a l'admin de desactiver ou non le html mais je voudrait qu'il soit desactivé entre les [code]
c'ets justement ca qui pose probleme
je pensait si dans les regex au lieu de mettre '<code>$1</code>' on pouvait mettre des focntions php je mettrait '<code>htmlentities($1, ENT_QUOTES)</code'
mais ca marche pas
Tu peux :
preg_replace('`\[code\](.+)\[/code\]`e','<code>htmlentities($1,ENT_QUOTES)</code>',$expression);
(à tester)
e :
Avec cette option, preg_replace effectue la substitution normale des références arrières dans la chaîne de remplacement, puis l'évalue comme un code PHP, et utilise le résultat pour remplacer la chaîne de recherche.
Seule preg_replace utilise cette option. Elle est ignorée par les autres. http://www.expreg.com/options.php
preg_replace_callback
(PHP 4 >= 4.0.5, PHP 5)
preg_replace_callback -- Rechercher/remplacer avec une expression rationnelle et fonction de callback
Description
mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit [, int &count]] )
Le comportement de preg_replace_callback() est presque identique à celui de preg_replace(), hormis le fait qu'à la place du paramètre replacement, il faut spécifier une fonction de callback callback qui sera appelée, avec les éléments trouvés en arguments. Cette fonction retourne alors la chaîne de remplacement.
$str = preg_replace_callback(
___'`<b>(.+)</b>`',
___create_function(
______// Les guillemets simples sont très importants ici
______// ou bien il faut protéger les caractères $ avec \$
______'$matches',
______'return "<em>".htmlentities($matches[0])."</em>";'
______),
___$str
___);
-->Message édité par Martius le 09/10/2005 18:54:33<--