Hello,
J'ai regardé pour le premier cas, en fait tu n'as pas besoin d'échapper les '<' ou les '>' en mettant des backslashes.
L'exemple suivant fonctionne bien chez moi :
{$test_regexp|regex_replace:'/<i>/':'<b>'}
Pour l'autre cas j'ai pas eu trop le temps de regarder, je te promets de regarder ça rapidement si personne ne te répond !! 
Un truc qui pourra t'aider : qu'est-ce qui se passe quand tu utilise le modificateur : regex_replace ?
Si tu regardes le fichier compilé (dans templates_c) tu as un truc du genre :
<?php echo ((is_array($_tmp=$this->_tpl_vars['test_regexp'])) ? $this->_run_mod_handler('regex_replace', true, $_tmp, '/<i>/', '<b>') : smarty_modifier_regex_replace($_tmp, '/<i>/', '<b>')); ?>
Dans ton cas (remplacement d'une chaîne de caractères), c'est la fonction smarty_modifier_regex_replace qui est appelée :
1 2 3 4 5 6 7 8 9
| function smarty_modifier_regex_replace($string, $search, $replace)
{
if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) {
/* remove eval-modifier from $search */
$search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]);
}
return preg_replace($search, $replace, $string);
} |
Voilà ... si ça peut aider !!
@++
Partager