ホームページ  >  記事  >  バックエンド開発  >  PHP 正規表現を使用して入力が IPv6 アドレスであるかどうかを確認する方法

PHP 正規表現を使用して入力が IPv6 アドレスであるかどうかを確認する方法

WBOY
WBOYオリジナル
2023-06-25 09:37:241689ブラウズ

IPv6 は、インターネット プロトコル バージョン 6 を指し、インターネット通信に使用される IP アドレス プロトコルです。 IPv6 アドレスは 128 ビットで構成される数値であり、通常は 8 つの 16 進数グループで表されます。 PHP では、正規表現を使用して、入力が IPv6 アドレスであるかどうかを確認できます。ここでは、PHP 正規表現を使用して IPv6 アドレスを確認する方法を説明します。

ステップ 1: IPv6 アドレスの形式を理解する

IPv6 アドレスは 8 つの 16 進数ブロックで構成され、各ブロックはコロン (:) で区切られます。各 16 進数ブロックは 4 桁の 16 進数である必要があります。 IPv6 アドレスの例をいくつか示します: IPv6 の

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

アドレスには、注意が必要な特別なルールがいくつかあります:

  • 「::」を使用して連続する 0 ブロックを表すことができますが、使用できるのは 1 回だけです。
  • IPv6 アドレスに「::」が複数ある場合は、いずれかの「::」の前に 0 を入力する必要があります;
  • IPv6 アドレスは、「:」で始まったり、「:」で終わることはできません。 。

ステップ 2: PHP 正規表現を作成する

PHP では、preg_match 関数を使用して正規表現のマッチングを実行できます。入力が IPv6 アドレスであることを確認するための PHP 正規表現の例を次に示します。

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);

}

この正規表現の主要部分は、IPv6 アドレスのさまざまな部分と一致するために使用される正規表現です。これには、次の 9 つの正規表現が含まれます:

  • 完全な IPv6 アドレス。たとえば、 、2001:0db8:85a3:0000:0000:8a2e:0370:7334;
  • fe80::1 など、0 が連続する IPv6 アドレス;
  • 先頭に 0 がある圧縮された IPv6 アドレス、例: 2001:db8:85a3::8a2e:370:7334;
  • 中間の 0 と先頭の 0 を含む圧縮された IPv6 アドレス (例: 2001:db8::8a2e:370:7334;
  • )
  • ミドル 0 と末尾 0 の圧縮 IPv6 アドレス (例: 2001:db8:85a3::7334);
  • 先頭 0、中間 0、末尾 0 の圧縮 IPv6 アドレス、例: :1; 、中央の 0 と末尾の 0 を持つ圧縮 IPv6 アドレス、例::;
  • 先頭の 0、中央の 0、末尾の 0 を持つ圧縮 IPv6 アドレス、例::db8:85a3:0:0: 8a2e:370:7334 ;
  • 先頭 0、中間 0、末尾 0 で構成される圧縮 IPv6 アドレス (例::db8:85a3:0:8a2e:370:7334)。
  • ステップ 3: PHP コードを使用して IPv6 アドレスを確認する

上記の正規表現を記述した後、次の PHP コードを使用して、入力が IPv6 アドレスであるかどうかを確認できます:

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

if (is_ipv6_address($address)) {

echo "入力は IPv6 アドレスです";
} else {
echo "入力は IPv6 アドレスではありません";
}

このコードでは、IPv6 アドレス文字列 $address が最初に定義され、その文字列は is_ipv6_address 関数を使用して検証されます。 IPv6 アドレスの場合、出力は「入力は IPv6 アドレスです」、それ以外の場合は出力は「入力は IPv6 アドレスではありません」となります。

概要

PHP では、正規表現を使用できます。入力が IPv6 アドレスであるかどうかを確認するには、まず IPv6 アドレスの形式を理解してから、適切な正規表現を記述し、preg_match 関数を使用して照合します。テスト後、上記の正規表現は IPv6 アドレスを正しく検証できます。

以上がPHP 正規表現を使用して入力が IPv6 アドレスであるかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。