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

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

WBOY
WBOYオリジナル
2023-06-24 09:20:341306ブラウズ

PHP は、一般的なサーバーサイド プログラミング言語として、入力データの正確性を検証するための強力なツールをいくつか提供します。この記事では、正規表現を使用して入力が IPv4 アドレスであるかどうかを確認する方法に焦点を当てます。

まず、IPv4 アドレスとは何ですか? IPv4 アドレスは 32 ビットの 2 進数を指し、通常は 4 つの 8 ビット 2 進数に分割され、「.」で区切られ、10 進数形式で表されます。たとえば、127.0.0.1 は IPv4 アドレスです。

次に、正規表現を使用して、入力が IPv4 アドレスであるかどうかを確認する方法を見てみましょう。次に、基本的な正規表現の例を示します。

/^(?:[0-9]{1,3}.){3}[0-9]{1,3}$/

この正規表現は 3 つの部分で構成されます。最初の部分は # で、一致の開始位置を指定するために使用されます。 2 番目の部分は (?:[0-9]{1,3}.){3} で、3 つの数字と 3 回繰り返されたドットの組み合わせと一致することを意味します。この組み合わせは最初の部分と一致します。 3 つの数字とドット。 (?:) は非キャプチャ グループを示します。つまり、マッチング時に記録されません。最後の部分は [0-9]{1,3}$ で、最後の数字と一致し、その後に他の文字はなく、この数字で終わることを意味します。

ただし、この正規表現にはまだいくつかの問題があります。これにより、256.0.0.0 や 192.168.1.0/24 のブロードキャスト アドレスなど、一部の不可能な IPv4 アドレスの照合が可能になります。

この問題を解決するには、各数値が 0 ~ 255 の範囲内であるかどうかを確認するロジックを追加する必要があります。次に、IPv4 アドレスを検証するための正規表現の例を示します。

/^((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]?)$/

この正規表現にも 3 つの部分が含まれています。最初の部分は (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?). で、これは意味します。一致 25 で始まる数値、24 で始まる数値、2 番目の数値が 0 から 9 の間、または 0 から 9 で始まり、3 つの場合すべてその後にドットが続きます。この組み合わせは、最初の 3 つの数字とドットに一致します。

2 番目の部分は、最初の部分を 3 回繰り返したものです。最後の部分は (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) で、一致することを意味します。 25 で始まる数字、24 で始まる数字、2 番目の数字が 0 ~ 9 の間、または 0 ~ 9 で始まる数字。この組み合わせは最後の番号と一致します。

この正規表現は、IPv4 アドレスの有効性を検証し、各数値を正確に取得し、各数値が 0 ~ 255 の範囲内であることを確認します。

この正規表現を使用して IP アドレスを確認する方法を示すサンプル コード:

function isIPv4($ip) {
  // 强制类型转换确保$ip为字符串类型
  $ip = (string)$ip;
  
  // 匹配IPv4地址
  $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]?)$/';
  
  return preg_match($pattern, $ip);
}

// 测试验证
var_dump(isIPv4('127.0.0.1')); // true
var_dump(isIPv4('256.0.0.0')); // false

上の例では、isIPv4() 関数を定義しました。 IPv4 アドレスを確認します。 IP アドレスを文字列型にキャストし、正規表現と照合して、照合が成功した場合は true を返し、そうでない場合は false を返します。

実際のアプリケーションでは、ユーザーが入力したデータを検証することが非常に重要です。正規表現を使用して IPv4 アドレスを検証することは、ユーザー入力の正確さを迅速かつ簡単にチェックする方法としては良い選択です。

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

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