ホームページ  >  記事  >  バックエンド開発  >  入力文字列が正しい IPv6 アドレスまたはドメイン名の形式であるかどうかを確認するための PHP 正規表現

入力文字列が正しい IPv6 アドレスまたはドメイン名の形式であるかどうかを確認するための PHP 正規表現

PHPz
PHPzオリジナル
2023-06-24 09:16:391792ブラウズ

Web サイトやクライアント アプリケーションを作成する場合、多くの場合、ユーザーの入力データが正しい形式であることを確認する必要があります。一般的な検証の 1 つは、ユーザーが入力した IP アドレスまたはドメイン名の形式が標準を満たしているかどうかを検証することです。

IPv6 は次世代の IP プロトコルで、より多彩なアドレス形式をサポートし、より多くのビットを使用して IP アドレスを表現します。 IPv6 アドレスには、コロンで区切られた 4 桁の 16 進数のグループが 8 つあります (例: 2001:0db8:85a3:0000:0000:8a2e:0370:7334)。 IPv6 アドレスの各値セットは、少なくとも 1 桁の 16 進数、またはゼロ値を表す二重コロン (::) に短縮できます。

ドメイン名は、ネットワーク内のアドレス解決の方法であり、IP アドレスを人間が判読できる名前に置き換えます。たとえば、www.google.com はドメイン名で、対応する IP アドレスは 216.58.194.174 です。

PHP では、正規表現を使用して、入力文字列が正しい IPv6 アドレスまたはドメイン名の形式であるかどうかを確認できます。以下は PHP の正規表現です:

IPv6 アドレス:

/^([da-fA-F]{1,4}:){7}[da-fA-F]{1,4}$/i

ドメイン名:

/^([a-z0-9]+(-[a-z0-9]+)*.)+[a-z]{2,}$/i

上記の正規表現は、preg_match( を使用して指定された文字と一致するために使用できます。 ) 関数文字列。

次のコードは、上記の正規表現を使用して IPv6 アドレスとドメイン名を確認する方法を示しています。

function is_valid_ipv6($ip) {
  return preg_match('/^([da-fA-F]{1,4}:){7}[da-fA-F]{1,4}$/i', $ip);
}

function is_valid_domain($domain) {
  return preg_match('/^([a-z0-9]+(-[a-z0-9]+)*.)+[a-z]{2,}$/i', $domain);
}

$ipv6 = '2001:0db8:85a3:0000:0000:8a2e:0370:7334';
$domain = 'www.google.com';

if (is_valid_ipv6($ipv6)) {
  echo $ipv6 . '是一个有效的IPv6地址';
} else {
  echo $ipv6 . '不是一个有效的IPv6地址';
}

if (is_valid_domain($domain)) {
  echo $domain . '是一个有效的域名';
} else {
  echo $domain . '不是一个有效的域名';
}

上記の例では、まず is_valid_ipv6() 関数と is_valid_domain() 関数を定義します。 IPv6 アドレスとドメイン名の形式を確認してください。次に、2 つの文字列 $ipv6 と $domain を定義しました。これらはそれぞれ IPv6 アドレスとドメイン名です。最後に、if ステートメントを使用して、2 つの文字列が検証ルールに準拠しているかどうかを判断します。

概要:

PHP では、正規表現を使用して、ユーザーが入力した IPv6 アドレスまたはドメイン名の形式が正しいかどうかを確認できます。この機能は、preg_match() 関数を使用してコードに簡単に実装できます。正規表現の記述にはある程度の経験が必要ですが、オンラインの正規表現ジェネレーターを使用するとプロセスを簡素化できます。

以上が入力文字列が正しい IPv6 アドレスまたはドメイン名の形式であるかどうかを確認するための PHP 正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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