Maison  >  Article  >  développement back-end  >  Comment vérifier si l'entrée est une adresse IPv6 à l'aide de PHP regex

Comment vérifier si l'entrée est une adresse IPv6 à l'aide de PHP regex

WBOY
WBOYoriginal
2023-06-25 09:37:241689parcourir

IPv6 fait référence à Internet Protocol Version 6, un protocole d'adresse IP utilisé pour la communication Internet. Une adresse IPv6 est un nombre composé de 128 bits, généralement représenté par huit groupes de nombres hexadécimaux. En PHP, vous pouvez utiliser des expressions régulières pour vérifier si l'entrée est une adresse IPv6. Voici comment utiliser les expressions régulières PHP pour vérifier les adresses IPv6.

Étape 1 : Comprendre le format de l'adresse IPv6

Une adresse IPv6 se compose de 8 blocs hexadécimaux, chaque bloc séparé par deux points (:). Chaque bloc hexadécimal doit comporter 4 chiffres hexadécimaux. Voici quelques exemples d'adresses IPv6 :

2001:0db8:85a3:0000:0000:8a2e:0370:7334
fe80::1
::1

Dans les adresses IPv6, il y a plusieurs règles particulières à connaître :

  • Vous pouvez utiliser "::" pour représenter des blocs 0 consécutifs, mais ils ne peuvent apparaître qu'une seule fois.
  • S'il y a plusieurs "::" dans l'adresse IPv6, vous devez remplir 0 avant l'un des "::" ; ";
  • L'adresse IPv6 ne peut pas commencer par " : " ni se terminer par " ".

Étape 2 : Écrire une expression régulière PHP

En PHP, vous pouvez utiliser la fonction preg_match pour effectuer une correspondance d'expression régulière. Voici un exemple d'expression régulière PHP pour vérifier que l'entrée est une adresse IPv6 :

function is_ipv6_address($address) {
return preg_match('/^(

  (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4})| # 1: full IPv6 address
  (([0-9a-fA-F]{1,4}:){1,7}:)                  # 2: compressed IPv6 address with leading zeros
  (:([0-9a-fA-F]{1,4}:){1,6})                  # 3: compressed IPv6 address with intermediate zeros
  (([0-9a-fA-F]{1,4}:){1,5}:)                  # 4: compressed IPv6 address with leading and intermediate zeros
  ((:[0-9a-fA-F]{1,4}){1,5}:)                  # 5: compressed IPv6 address with trailing zeros
  ((:[0-9a-fA-F]{1,4}){1,4}:)                  # 6: compressed IPv6 address with leading, intermediate and trailing zeros
  ((:[0-9a-fA-F]{1,4}){1,3}:)                  # 7: compressed IPv6 address with leading, intermediate and trailing zeros
  ((:[0-9a-fA-F]{1,4}){1,2}:)                  # 8: compressed IPv6 address with leading, intermediate and trailing zeros
  ((:[0-9a-fA-F]{1,4}){1,1}:)                  # 9: compressed IPv6 address with leading, intermediate and trailing zeros
  )$/i', $address);

}

La partie principale de l'expression régulière est des expressions régulières pour la correspondance diverses parties des adresses IPv6. Il comprend les 9 expressions régulières suivantes :

  • adresse IPv6 complète, telle que 2001:0db8:85a3:0000:0000:8a2e:0370:7334 ; fe80::1;
  • Adresses IPv6 compressées avec des 0 en tête, telles que 2001:db8:85a3::8a2e:370:7334
  • Adresses IPv6 compressées avec des 0 au milieu et des 0 en tête, telles que 2001 :db8::8a2e : 370:7334;
  • Adresse IPv6 compressée avec 0 au milieu et 0 à la fin, par exemple : 2001:db8:85a3::7334;
  • Adresse IPv6 compressée avec 0 au début, 0 au milieu et 0 à la fin, par exemple : : 1;
  • Adresse IPv6 compressée avec 0 en début, 0 au milieu et 0 à la fin, par exemple ::;
  • Adresse IPv6 compressée avec 0 au début, 0 au milieu et 0 à la fin, par exemple ::db8:85a3:0:0:8a2e:370 : 7334 ;
  • Adresse IPv6 compressée avec 0 en tête, 0 au milieu et 0 à la fin, par exemple ::db8:85a3:0:8a2e:370:7334
  • Étape 3 : Utilisez le code PHP pour vérifier l'adresse IPv6

Pendant que. écriture Après avoir complété l'expression régulière ci-dessus, vous pouvez utiliser le code PHP suivant pour vérifier si l'entrée est une adresse IPv6 :

$address = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";

if (is_ipv6_address($address )) {

echo "L'entrée est une adresse IPv6";
} else {
echo "L'entrée n'est pas une adresse IPv6";
}

Dans ce code, une chaîne d'adresse IPv6 $address est défini en premier, et la fonction is_ipv6_address est utilisée pour La chaîne est validée. Si la chaîne est une adresse IPv6, affiche "L'entrée est une adresse IPv6", sinon affiche "L'entrée n'est pas une adresse IPv6"

Résumé

En PHP, vous pouvez utiliser des expressions régulières pour valider l'entrée. Qu'il s'agisse d'une adresse IPv6. Comprenez d'abord le format de l'adresse IPv6, puis écrivez une expression régulière appropriée et utilisez la fonction preg_match pour correspondre. Après le test, l'expression régulière ci-dessus peut vérifier correctement la. Adresse IPv6.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn