Passage php 5.4 - Function ereg() is deprecated

Résolu/Fermé
oncletom Messages postés 39 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 28 octobre 2021 - 11 déc. 2015 à 10:11
[Dal] Messages postés 6014 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 16 novembre 2022 - 11 déc. 2015 à 17:03
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




2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 543
11 déc. 2015 à 15:19
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 6014 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 16 novembre 2022 1 032
Modifié par [Dal] le 11/12/2015 à 17:05
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