ホームページ  >  記事  >  バックエンド開発  >  IPアドレスの有効性を検証するためのPHP正規表現

IPアドレスの有効性を検証するためのPHP正規表現

王林
王林オリジナル
2023-06-24 11:27:101187ブラウズ

Web アプリケーションを開発する場合、多くの場合、IP アドレスを使用する必要があります。 IP アドレスが無効であると、セキュリティ上の脆弱性やその他の問題が発生する可能性があるため、IP アドレスの有効性は非常に重要です。 PHP 正規表現は、IP アドレスの有効性を検証するのに役立つ便利なツールです。

PHP 正規表現は、テキストの一致と置換に使用できる強力なテキスト処理ツールです。 PHP では、正規表現は通常、preg シリーズの関数を使用して処理されます。 IP アドレスの有効性を確認するには、次の正規表現を使用できます。

$pattern = '/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/';

この正規表現は、基本的に、あらゆる正当な IP アドレスと一致します。以下で詳しく説明しましょう。

まず、正規表現の先頭は「^」です。これは、文字列の先頭から照合が開始されることを意味します。すると、「(?:)」で囲まれた部分が非キャプチャグループとなり、繰り返しマッチングが可能となります。次は「(?:25[0-5]|20-4|[01]?0-9?)」です。この部分は、IP アドレスの最初の 3 つのセグメントと一致します。各セグメントの値の範囲は 0 ~ です。 255.

具体的には、この部分は「|」で区切られた 3 つの部分で構成されます:

  • 「25[0-5]」は 25 から 255 までの数値を表します。
  • 「20-4」は、200~249の数字と250~255の数字を意味します。
  • 「[01]?0-9?」は、0 ~ 199 の数値を表します。このうち、「[01]?[0-9]」は0から19までの数字を表し、「[01]?0-9?」は0から199までの数字を表します。

次のステップは「.」です。これは、IP アドレスの「.」と一致することを意味します。

最後の部分は "(?:25[0-5]|20-4|[01]?0-9?)$" です。この部分は IP アドレスの最後のセグメントと一致します。は 4 番目のセグメントです。そのルールは前のルールと似ているため、再度説明しません。最後の「$」は文字列の末尾から一致することを意味します。

この正規表現は、IPv4 アドレスの有効性を検証するためにのみ使用できることに注意してください。 IPv6 アドレスの有効性を確認する必要がある場合は、別の正規表現を使用する必要があります。

以下は、IP アドレスの有効性を検証するための完全な PHP コード例です。

function validateIPAddress($ip) {
    $pattern = '/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/';
    if (preg_match($pattern, $ip)) {
        return true;
    } else {
        return false;
    }
}

$ip = '192.168.0.1';
if (validateIPAddress($ip)) {
    echo 'IP地址有效';
} else {
    echo 'IP地址无效';
}

最初に、IP アドレスの有効性を検証するための validateIPAddress 関数を定義します。 IP アドレスが有効な場合は true を返し、それ以外の場合は false を返します。この関数では、マッチングに前述の正規表現が使用されます。

次に、IP アドレスを格納するために $ip 変数が定義されます。 IP アドレスが有効な場合は「IP アドレスが有効です」が出力され、そうでない場合は「IP アドレスが無効です」が出力されます。

この例を通して、PHP 正規表現を使用して IP アドレスの有効性を検証するのが非常に簡単であることがわかります。実際のアプリケーションでは、検証をより正確にするために、必要に応じていくつかのルールを削除または追加することもできます。

以上がIPアドレスの有効性を検証するためのPHP正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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