Passage php 5.4 - Function ereg() is deprecated

Résolu
oncletom Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
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

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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,
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 106
 
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
0