2010-09-21 20 views
1

Comment:PHP: remplacer les caractères et faire des exceptions (preg_replace)

  • remplacer des caractères dans un mot en utilisant preg_replace() mais faire une exception si elles font partie d'un certain mot.
  • remplacez un caractère majuscule par un remplacement en majuscules même si le remplacement est en minuscules et vice versa .

exemple:

$string = 'Newton, Einstein and Edison. end'; 
echo preg_replace('/n/i', '<b>n</b>', $string); 

de: n EWTO n, Ei n stei n un n d EDISO n. e n d
à: N EWTO n, Ei n stei n un n d EDISO n. fin

Dans ce cas, je veux que tous les n lettres à remplacer, à moins qu'ils font partie du mot end Et Newton ne devrait pas changer à newton

Répondre

1
echo preg_replace('/((?<!\be)n|n(?!d\b))/i', '<b>\1</b>', $string); 

Il correspond à toute lettre « n » qui est soit non précédé de [limite de mot + e] ou non suivi de [d + limite de mot].

Le cas général: /((?<!\b$PREFIX)$LETTER|$LETTER(?!$SUFFIX\b))/i'

+0

Je ferais le look-derrière après correspondant à la lettre: '/ LETTRE $ (! <\ B $ PREFIX $ LETTRE) (! $ SUFFIXE \ b)/I' – Gumbo

+0

C'est la deuxième fois que vous faites ma journée. Grand grand merci !! – Zebra

+0

@Gumbo, Merci beaucoup pour la réponse! – Zebra