[RESOLU] Migration de PHP 5.6 à 7.0

Petit nouveau ! | 2 Messages

03 mars 2016, 13:08

Bonjour,

Je rencontre une érreur sur ma page contact lors de l'envoie d'email depuis la migration vers PHP 7.0.3 sur mon serveur.

La fonction incriminée est EREG :

Code : Tout sélectionner

$resultats = ereg('^[^@]+@[^@]+\.[^@\.]+$', $msg_email, $poubelle);
J'ai essayé de remplacer ereg avec preg_replace mais sans pouvoir modifier son contenu car manque de connaissance :(

Code : Tout sélectionner

$resultats = preg_replace('^[^@]+@[^@]+\.[^@\.]+$', $msg_email, $poubelle);
Du coup, celà ne fonctionne pas.

Pouvez vous m'aider ? merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

03 mars 2016, 15:47

Bonjour,

Il faut que ton expression régulière soit encadrée par des caractères identiques.
Dans la doc PHP, c'est souvent des slashes "/" qui sont utilisés, pour ma part je te recommande le caractère ` (AltGr + 7 sur un clavier sous Windows) pour être sûr qu'il n'y ait pas de problème si ta variable contient un slash.
$resultats = preg_replace('`^[^@]+@[^@]+\.[^@\.]+$`', $msg_email, $poubelle);
L'avantage de ces caractères d'encadrement c'est notamment qu'ils permettent d'ajouter des options comme par exemple l'insensibilité à la casse en ajoutant la lettre "i"
$resultats = preg_replace('`^[^@]+@[^@]+\.[^@\.]+$`i', $msg_email, $poubelle);
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

03 mars 2016, 18:40

Merci bien, ça fonctionne avec les encadrements. Par contre je me suis trompé, il fallait un preg_match et non un preg_replace. :) Mais Merci bcps, ça m’enlève une belle épine du pied !