Comment vérifier le format d'une adresse IP en PHP ?

Réponses rédigées par Antoine
Dernière mise à jour : 2022-01-31 11:02:57
Thèmes : php - adresse-ip
Question

Comment faire pour vérifier le format d'une adresse IP v4, ou une adresse IP v6, en PHP ?

Réponse

Pour vérifier le format d'une adresse IP v4 ou v6, en PHP, vous pouvez utiliser des expressions régulières REGEX, ainsi que la fonction PHP preg_match().

Expression régulière pour vérifier une IP v4 :

/((^|\.)(2[0-5]{2}|[01][0-9]{2}|[0-9]{1,2})(?=\.|$)){4}/

Expression régulière pour vérifier une IP v6 :

/^:?([a-fA-F0-9]{1,4}(:|.)?){0,8}(:|::)?([a-fA-F0-9]{1,4}(:|.)?){0,8}$/

La fonction preg_match permet de valider la correspondance entre l'expression régulière et l'IP à contrôler.

Voici une exemple pour vérifier le format d'une adresse IP en PHP :

<?php
function verifierIP($ip) {
  if($ip=="::1") return false;
  $ipv4 = "/((^|\.)(2[0-5]{2}|[01][0-9]{2}|[0-9]{1,2})(?=\.|$)){4}/";
  $ipv6 = "/^:?([a-fA-F0-9]{1,4}(:|.)?){0,8}(:|::)?([a-fA-F0-9]{1,4}(:|.)?){0,8}$/";
  return (preg_match($ipv4, $ip) OR preg_match($ipv6, $ip));
}

$ip = "8.125.8.4";
if (verifierIP($ip) == TRUE) {
  echo "Le format de l'adresse IP ".$ip." est valide.";
}
else echo "Le format de l'adresse IP ".$ip." est invalide.";
?>