Valider une IP, remplacer ereg par preg_match !

Petit nouveau ! | 3 Messages

19 juil. 2011, 16:58

Bonjour,
je ne m'y connais pas trop en PHP, mais je dois remplacer une fonction écrite avec ereg car cette dernière n'est plus compatible avec PHP 5.3.

Cette fonction est la suivante :

Code : Tout sélectionner

function luc_Domain($ip) { $host = gethostbyaddr($ip); if (ereg('^([0-9]{1,3}\.){3}[0-9]{1,3}$', $host)) return ""; else return my_substr(strrchr($host, "."), 1); }

est-ce que preg_match(#([0-9]{1,3}\.){3}[0-9]{1,3}#, host) est correct ?

Merci de votre aide !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 juil. 2011, 18:48

Il te manque les apostrophes/guillemets pour délimiter ta chaine (ton masque) et tu as retiré les "^" et "$" qui permettent de spécifier que ton masque doit impérativement couvrir le début et la fin de la chaine.

En gros, ton masque est bon, il suffit juste de rajouter un délimiteur de part et d'autre et de changer le nom de la fonction :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 3 Messages

19 juil. 2011, 20:32

Merci beaucoup de la réponse.

Donc si j'ai bien compris je fais ça :

Code : Tout sélectionner

function luc_Domain($ip) { $host = gethostbyaddr($ip); if (ereg('#([0-9]{1,3}\.){3}[0-9]{1,3}#', $host)) return ""; else return my_substr(strrchr($host, "."), 1); }
ou

Code : Tout sélectionner

]function luc_Domain($ip) { $host = gethostbyaddr($ip); if (ereg('#^([0-9]{1,3}\.){3}[0-9]{1,3}$#', $host)) return ""; else return my_substr(strrchr($host, "."), 1); }
Les délimiteurs # sont corrects non ?

lequel des deux est bon ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 juil. 2011, 21:05

En remplaçant ereg par preg_match ;)

Les deux solutions sont bonnes, mais la seconde est toutefois plus restrictive puisqu'elle contrôle qu'il n'y a rien d'autre que l'adresse IP dans ta chaine :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 3 Messages

29 juil. 2011, 09:53

Merci beaucoup, vous êtes un ange :)

ViPHP
ViPHP | 5462 Messages

29 juil. 2011, 16:27

y'a déjà une fonction dans php pour faire ça : filter_var avec FILTER_VALIDATE_IP