Accueil > Tutoriels pour Webmasters > [PHP] Vérifier le format d'une adresse IP

[PHP] Vérifier le format d'une adresse IP

Il est parfois nécessaire de vérifier le bon format d'une adresse IP en PHP. Ce tutoriel présente deux bout de code en PHP pour vérifier qu'une chaîne respecte bien le format d'adresse IP. Il faut noter que ces codes vérifie le format d'une adresse IPv4 (et non pas l'adresse IPv6).

Utiliser la fonction filter_var()

Grâce à une fonction déjà prêt en PHP, il est possible de vérifier facilement si une chaîne de caractère à le même format qu'une adresse IP ou non.

  1. <?php
  2. //$ip = '0123456789'; // test avec une chaîne qui n'est pas une adresse IP
  3. $ip = '127.0.0.1'; // test avec une chaîne qui est une adresse IP
  4.  
  5. // Vérifie si la chaîne ressemble à une adresse IP
  6. if (filter_var($ip, FILTER_VALIDATE_IP)) {
  7. echo 'Cette adresse IP est correcte.';
  8. } else {
  9. echo 'Cette adresse IP a un format non adapté.';
  10. }
  11. ?>

En testant ce script PHP, le message qui doit s'afficher est "Cette adresse IP est correcte.". Il est possible de modifier le contenu de la variable $ip pour tester avec d'autres exemples d'adresse IP.

Utiliser une expression régulière

Un code similaire à celui précédent est présenté ci-dessous. Cette fois-ci la vérification du format de la variable $ip est contrôlé à l'aide d'une expression régulière (REGEX):

  1. <?php
  2. //$ip = '0123456789'; // test avec une chaîne qui n'est pas une adresse IP
  3. $ip = '127.0.0.1'; // test avec une chaîne qui est une adresse IP
  4.  
  5. // Vérifie si la chaîne ressemble à une adresse IP
  6. if (preg_match('#^([0-9]{1,3}\.){3}[0-9]{1,3}$#', $ip)) {
  7. echo 'Cette adresse IP est correcte.';
  8. } else {
  9. echo 'Cette adresse IP a un format non adapté.';
  10. }
  11. ?>

Les expressions régulières sont pratique puisqu'elles peuvent être utilisées avec diverses fonctions telles que preg_match(), preg_replace(), preg_match_all() ... Par conséquent il est possible d'adapter le code ci-dessous pour d'autres applications.