Fabriquer le web - Passer la toise du php5


Le passage de serveurs du PHP4 au PHP5 rend certains scripts inopérants. En particulier les fonctions de la famille EREG ne sont plus digérées. Comment les remplacer dans les scripts existants ? (Merci Icare)

Les fonctions Posix ayant été abandonnées par PHP5 voici un tableau des fonctions équivalentes PCRE.
 

Remplacements de fonctions
POSIX PCRE
ereg_replace() preg_replace()
ereg() preg_match()
eregi_replace() preg_replace()
eregi() preg_match()
split() preg_split()
spliti() preg_split()


Les fonctions ereg() et eregi() - i pour insensible à la casse - sont à remplacer par preg_match().
Pour remplacer la stricte valeur xyz minuscules par ZZZZ:
ereg("xyz", "ZZZZ", ) devient preg_match("!xyz!", "ZZZZ", )
Pour remplacer la valeur xyz sans tenir compte des minuscules et majuscules par ZZZZ:
eregi("xyz", "ZZZZ", ) devient preg_match("!xyz!i", "ZZZZ", )
La différence c'est qu'on ne traite plus une valeur xyz mais une "expression régulière" c'est pour cela que la valeur xyz est délimitée par les deux ! qui pourraient être aussi bien deux / deux | ... en fait 2 caractères ne figurant pas dans l'expression.

De la même manière ereg_replace() et eregi_replace() sont remplacées par preg_replace()
ereg_replace("Toto", "Titi", ) devient preg_replace("!Toto!", "Titi", )
eregi_replace("Toto", "Titi", )
devient preg_replace("!Toto!i", "Titi", )
Là on remplace aussi bien Toto que toto, toTo ou encore TOTO :-) .

Cela semble simple comme ça avec du texte simple,mais ça se complique salement suivant les expressions à remplacer.

Plus d'infos:

http://fr.php.net/manual/fr/function.preg-match.php

 

http://www.php.net/manual/fr/migration53.deprecated.php

Le problème des délimiteurs, c'est qu'ils doivent pouvoir être distingués d'autres signes qui pourraient être utilisés dans le code. Icare met plutôt des !, Nico des /, mais j'ai eu des soucis. En fait je me suis rabattue sur des signes que j'étais sure de ne jamais rencontrer et j'ai choisi les back-quotes: ` que j'obtiens sur mon clavier windows avec altgr+la touche 7 en minuscule dans la barre du haut, le tout suivi d'un espace.

Sur un clavier Mac, le back-quote s'obtient avec la touche pour la livre sterling £ en minuscule.

back-quote.png


La piste des back-quotes m'a été donnée dans un forum sur les passages au php5.


Index |Info | Permalien | PDF

Technique

adHoc

Fabriquer le web

Installer

Sécuriser

Référencer

Astuces CSS

Mail, Webmail, courrier etc ...

Piwigo

Écolibre