PHPでIPアドレスと整数を変換する方法

PHPz
リリース: 2023-04-11 10:27:04
オリジナル
902 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!