ネットワーク構成の領域では、IP アドレスが特定の CIDR サブネット内にあるかどうかを判断するのが一般的なタスクです。この記事では、基本的な組み込み関数を使用してこれを実現する簡単な方法を紹介します。
このアルゴリズムは、ip2long( ) 関数。続いて、CIDR 範囲の /xx 表記に対応するサブネット マスクが計算されます。
最後のステップでは、IP とサブネット マスクの間でビット単位の「and」演算を実行します。結果がサブネットと一致する場合、指定された IP アドレスが指定されたサブネット内に存在することが確認できます。
以下のコードは、前述のアルゴリズムの実装を提供します。
<code class="php">function cidr_match($ip, $range) { list ($subnet, $bits) = explode('/', $range); if ($bits === null) { $bits = 32; } $ip = ip2long($ip); $subnet = ip2long($subnet); $mask = -1 << (32 - $bits); $subnet &= $mask; // Adjust subnet alignment if necessary return ($ip & $mask) == $subnet; }</code>
この関数は次のように使用できます:
<code class="php">$ips = array('10.2.1.100', '10.2.1.101', '10.5.1.100', '1.2.3.4'); foreach ($ips as $IP) { if (cidr_match($IP, '10.2.0.0/16') == true) { print "You're in the 10.2 subnet\n"; } }</code>
このコードは出力します:
You're in the 10.2 subnet You're in the 10.2 subnet
以上がIP アドレスが CIDR サブネットに属しているかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。