Passage php 5.4 - Function ereg() is deprecated

Résolu/Fermé
Signaler
Messages postés
39
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
28 octobre 2021
-
Messages postés
5672
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
29 novembre 2021
-
Bonjour,

Je viens de passer mon hébergement en php 5.4 (sans possibilité de redescendre en php 4 ce que je n'envisage d'ailleurs pas)

Tout fonctionne à peu près sur mon site de photos, coupé en deux parties, l'une avec wordpress et l'autre avec une application assez ancienne genre photothèque

A voir ici : www.pariscool.com

La partie wordpress tourne comme il faut avec les mises à jour ad hoc

Mais j'ai un message d'alerte dans la partie admin de la photothèque :

Deprecated: Function ereg() is deprecated in /flex/domain/pariscool.com/site/www/album/include/user.inc.php on line 55

Après consultation des évolutions sur php.net , j'ai vu que la fonction ereg () était déclarée obsolète et qu'il convenait de la remplacer par preg_match()

Mais visiblement il ne suffit pas dans le code de remplacer ereg par preg_match, car les erreurs se succèdent.

Le code en question est celui-ci:

if ( isset( $session_id )
and ereg( "^[0-9a-zA-Z]{".$conf['session_id_size']."}$", $session_id ) )

Si je remplace ereg par preg_match, il proteste en me disant que ^ n'est pas fermé.

N'étant pas un spécialiste du php, je travaille par tatonnements successifs, mais là, la méthode "j'essaie tout jusqu'à ce que cela marche" semble bien insuffisante.

Pouvez-vous m'aider? Merci beaucoup




A voir également:

2 réponses

Messages postés
2624
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
2 décembre 2021
477
Salut,

Les différences entre POSIX et PCRE sont listés ici : https://www.php.net/manual/fr/reference.pcre.pattern.posix.php

Un résumé des principales différences (délimiteurs et modificateurs) avec quelques exemples : https://stackoverflow.com/questions/6270004/how-can-i-convert-ereg-expressions-to-preg-in-php#answer-6270007

Bonne journée,
Messages postés
5672
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
29 novembre 2021
955
Salut oncletom,

preg_match
nécessite que l'expression régulière soit délimitée par des caractères qui encadrent l'expression et qui, traditionnellement, sont des slashs (mais tu peux utiliser un autre caractère si tu préfères, si possible non utilisé dans l'expression, pour éviter d'avoir à l'échapper).

https://www.php.net/manual/en/function.preg-match.php
https://www.php.net/manual/en/function.preg-match.php#96830

donc, essaye :

if ( isset( $session_id )
and preg_match( "/^[0-9a-zA-Z]{".$conf['session_id_size']."}$/", $session_id ) )

(non testé)

Dal