2012-07-19 4 views
0

J'essaie de corriger la fonction dépréciée eregi_replace() avec preg_replace().eregi_replace à preg_replace

$text = eregi_replace('(((f|ht){1}tp://)[[email protected]:%_+.~#?&//=]+)', '<a target="_blank" class="clickable" href="\1">\1</a>', $text); 

$text = eregi_replace('([[:space:]()[{}])(www.[[email protected]:%_+.~#?&//=]+)', '\1<a target="_blank" class="clickable" href="http://\2">\2</a>', $text); 

Comment pourrais-je obtenir ces à travailler avec preg_replace()? Je suis bien au-dessus de ma tête ici.

+0

Voir http://stackoverflow.com/questions/2626079/convert-eregi-replace-to-preg-replace-in-php et http://stackoverflow.com/questions/1818262/converting-an-eregi- remplacer-à-un-preg-remplacer –

Répondre

0

Il vous suffit de changer le nom de la fonction et d'envelopper votre expression dans un délimiteur. Pour les fonctions sensibles à la casse eregi() et eregi_replace(), vous mettez un modificateur i après le dernier délimiteur:

ereg('...', foo) // preg_match('/.../', foo) 
eregi('...', foo) // preg_match('/.../i', foo) 
ereg_replace('...', foo) // preg_replace('/.../', foo) 
eregi_replace('...', foo) // preg_replace('/.../i', foo) 

Je l'ai utilisé le délimiteur / ici, mais vous aurez besoin d'utiliser tout delimiter fait le plus de sens et doesn n'apparaissez pas dans votre expression elle-même.

La grande majorité (sinon la totalité) des expressions courantes seront des reports directs, sans aucune conversion nécessaire. J'ai converti plusieurs grands projets et je n'ai jamais eu l'occasion de modifier l'expression, mais cela ne veut pas dire qu'il n'y a pas de différences.