ホームページ  >  記事  >  バックエンド開発  >  IP アドレスが CIDR サブネットに属しているかどうかを確認するにはどうすればよいですか?

IP アドレスが CIDR サブネットに属しているかどうかを確認するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-18 19:32:03498ブラウズ

How to Verify if an IP Address Belongs to a CIDR Subnet?

CIDR サブネット内に IP が含まれていることを確認する

ネットワーク構成の領域では、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 サイトの他の関連記事を参照してください。

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