
Envoyé par
Kerod
Pour moi ca remplace que les n
C'est parce-que le \n dans des doubles quotes ne représente pas le caractère n précédé de \ mais bien un retour ligne. La regex ne le remplacera donc jamais et pour cause...
La solution réside dans l'utilisation des assertions arrières négatives (negative lookbehind):
1 2 3 4
|
// supprimer tous les n sauf ceux précédés du caractère z:
$chaine = 'Bonjour zn n allo blabla.';
echo $chaine = preg_replace("#(?<!z)n#", "e", $chaine); |
Ou bien, de manière plus classique, avec une classe de caractères négative:
echo $chaine = preg_replace("#([^z])n#", "$1e", $chaine);
Partager