Tout d'abord, comme mentionné ailleurs, vous devriez probablement utiliser str_replace() plutôt que regex pour les cas simples comme celui dans votre exemple.
Maintenant, une explication rapide sur les regex en PHP:
Comme vous le savez déjà clairement, le ereg_ * fonctions sont maintenant dépréciée en PHP, et vous devez utiliser le preg_ * fonctions à la place.
La principale différence entre les deux ensembles de fonctions est le type d'expression régulière qu'ils utilisent. Les fonctions ereg utilisent une regex de type POSIX, tandis que les fonctions preg utilisent une regex de style PERL. Les développeurs PHP ont décidé de standardiser sur regex style PERL, d'où la raison pour laquelle les fonctions ereg sont dépréciées. Je mentionne tout cela parce qu'il est utile de comprendre les différences entre les deux types de regex lors de la conversion de l'un à l'autre. Pour la plupart, ils sont très similaires - la plupart des codes regex communs fonctionnent de la même manière entre eux. Par exemple, les ^
et $
sont les mêmes dans les deux, indiquant des ancres au début et à la fin de la chaîne. Là où ils diffèrent énormément, c'est que les fonctions preg ne supportent pas les classes de caractères verbales que supporte ereg.Donc, si vous avez des eregs qui incluent des codes comme [:digit:]
ou [:alpha:]
alors vous aurez plus de travail pour les convertir. Ils peuvent encore être convertis, cependant.
Il y a quelques autres différences entre les deux, mais à moins que vous ne fassiez des expressions complexes (et ça ne sonne pas comme ça), il est peu probable que vous rencontriez d'autres problèmes de conversion entre les deux styles.
A part ça, la grande différence est que preg requiert un caractère délimiteur à chaque extrémité de la chaîne regex pour indiquer qu'il s'agit d'une regex. (Ceci est généralement une barre oblique, mais peut être presque n'importe quel symbole tant que c'est la même chose aux deux extrémités). Ce n'est pas la même chose que les^et $, donc, votre remarque sur leur remplacement est incorrecte; vous avez toujours besoin du^et $ ainsi que des barres obliques.
Par conséquent: pour convertir le code ereg comme ceci: '^xyz$'
, vous serait tout simplement ajouter des barres obliques, comme ceci: '/^xyz$/'
espoir qui aide.
[modifier]
Juste un montage rapide pour vous donner quelques documents de référence supplémentaires:
Les deux sont dans mes favoris permanents.
Merci pour la réponse en profondeur! Il y a quelques utilisations de '[: space:]' dans les regexes dans la fonction de code postal, qu'il semblerait que je devrais convertir en '\ s'? – bcmcfc
[: space:] peut être converti en ... euh ... un caractère espace. hehe. Facile, hein? Voir aussi les liens de référence que j'ai ajoutés à ma réponse principale. – Spudley
D'oh! J'ai en fait une impression (tachée de café) de cette feuille de triche à côté de moi, mais sans une bonne compréhension ... c'est juste de la tricherie! ;-) – bcmcfc