IP アドレスは、コンピュータ インターネットで一般的に使用されるネットワーク プロトコル アドレスです。一般的な形式には、IPv4 と IPv6 が含まれます。IPv4 アドレスは、4 つの 8 ビット 2 進数で表されます。各 2 進数の範囲は 0 ~ 255 です。各 2 進数は次のとおりです。 . で区切ります (例: 192.168.1.1)。プログラムでは、IP アドレスを対応する整数に変換したり、整数を対応する IP アドレスに変換したりする必要がある場合があり、これには IP アドレスと整数の間の変換が含まれます。
PHP プログラムでは、いくつかの組み込み関数を使用して、IP アドレスと整数の間で変換できます。 PHP の IP アドレス変換関数は ip2long() で、この関数は IPv4 文字列パラメータを受け取り、対応する 32 ビットの符号なし整数を返します。渡された IPv4 アドレスが有効な IPv4 アドレスではない場合、関数は false を返します。たとえば、192.168.1.1 を整数に変換するには、次のコードを使用できます:
$ip = '192.168.1.1'; $ip_long = ip2long($ip); echo $ip_long;
出力は: -1062731775 です。 PHP は 32 ビットのマシンワードを使用するため、返される整数は符号付きであることに注意してください。符号なしの整数が必要な場合は、次のコードを使用できます:
$long = sprintf("%u", $ip_long); echo $long;
出力結果は: 3232235775 です。
整数を対応する IP アドレスに変換する必要がある場合は、PHP の long2ip() 関数を使用できます。この関数は 32 ビットの符号なし整数パラメータを受け取り、対応する IPv4 アドレス文字列を返します。たとえば、-1062731775 を対応する IP アドレスに変換するには、次のコードを使用できます。
$ip_long = -1062731775; $ip = long2ip($ip_long); echo $ip;
出力結果は 192.168.1.1 です。
long2ip() 関数のパラメータは 32 ビットの符号なし整数である必要があることに注意してください。符号付き整数または 64 ビット整数が渡された場合、関数によって返される IP アドレスは次のようになります。間違っている。符号付き整数を符号なし整数に変換する必要がある場合は、指定した形式の文字列を変数に出力できる PHP の sprintf() 関数を使用できます。例:
$long = sprintf("%u", $ip_long); $ip = long2ip($long); echo $ip;
上記のコードは次のようになります。符号付き整数を符号なし整数に変換し、その後、符号なし整数を対応する IPv4 アドレス文字列に変換します。
つまり、PHP プログラムで IP アドレスと整数を変換するプロセスは非常に簡単で、組み込みの ip2long() 関数と long2ip() 関数を使用するだけです。現在、IPv6 アドレスも広く使用されています。IPv6 アドレスを処理する必要がある場合は、PHP の inet_pton() 関数と inet_ntop() 関数を使用できます。これら 2 つの関数は、IPv6 アドレスを対応するバイナリ文字列に変換し、逆変換することができますが、 IPv6 アドレスの処理は IPv4 アドレスよりも複雑で、拡張ライブラリを使用するか、独自のコードを作成する必要があります。
以上がPHPでIPアドレスと整数を変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。