【PHP8.x】long2ip関数の使い方
long2ip関数は、整数で表現されたインターネットプロトコルバージョン4(IPv4)のアドレスを、人間が読みやすいドット区切りの文字列形式に変換する関数です。IPアドレスは、データベースへの格納効率や検索速度を考慮して、32ビットの整数値として保存されることがあります。この関数は、そのように整数として保存されたIPアドレスを、「192.168.0.1」のような標準的な文字列表現に戻す際に使用されます。引数として変換したいIPアドレスを表す整数を一つ受け取ります。処理が成功した場合はドット区切りのIPv4アドレス文字列を返しますが、引数が有効なアドレスを表す整数でない場合は false
を返します。システムのアーキテクチャによっては、大きなIPアドレスが負の整数として表現されることがありますが、この関数はそれも正しく解釈して変換します。なお、この関数の逆の変換、つまりIPv4アドレス文字列を整数に変換するためには ip2long
関数を使用します。この関数はIPv4にのみ対応しており、IPv6アドレスの変換には使用できない点に注意してください。
基本的な使い方
構文(syntax)
string|false long2ip(int $integer_ip)
引数(parameters)
int $ip
- int $ip: IPアドレスを表す整数
戻り値(return)
string | false
指定されたIPv4アドレスの整数表現を、ドット区切りの標準的なIPv4アドレス文字列に変換します。変換に失敗した場合はfalse
を返します。
サンプルコード
PHPのIPアドレス整数・文字列変換
<?php
/**
* long2ip() 関数は、整数形式のIPアドレスをドット区切り形式の文字列に変換します。
* 主に、データベースに整数として保存されたIPアドレスを表示する際などに使用されます。
*
* このサンプルコードでは、まずドット区切りIPアドレスを整数に変換し、
* その後 long2ip() を使って元のドット区切り形式に戻す方法を示します。
*/
// 例として、ドット区切り形式のIPv4アドレスを定義します。
$ipAddressString = "192.168.1.10";
// ip2long() 関数を使用して、ドット区切り形式のIPアドレスを整数形式に変換します。
// 成功すると整数、失敗すると false が返されます。
$ipAddressLong = ip2long($ipAddressString);
// 変換が成功したかを確認します。
if ($ipAddressLong === false) {
echo "エラー: IPアドレス '{$ipAddressString}' の整数への変換に失敗しました。\n";
} else {
echo "元のIPアドレス (文字列): " . $ipAddressString . "\n";
echo "変換されたIPアドレス (整数): " . $ipAddressLong . "\n\n";
// long2ip() 関数を使用して、整数形式のIPアドレスをドット区切り形式の文字列に戻します。
// 成功するとIPアドレスの文字列、失敗すると false が返されます。
// 通常、ip2long() で得られた有効な整数を渡す限り、変換は成功します。
$convertedIpAddressString = long2ip($ipAddressLong);
// 変換が成功したかを確認します。
if ($convertedIpAddressString === false) {
echo "エラー: 整数 '{$ipAddressLong}' からIPアドレスへの変換に失敗しました。\n";
} else {
echo "整数から再変換したIPアドレス (文字列): " . $convertedIpAddressString . "\n";
}
}
// 無効な整数値を試す(例: 負の値や大きすぎる値)
// long2ip() は基本的にIPv4のアドレス範囲内の整数値を期待します。
// 範囲外の値を渡すと意図しない結果や false が返る可能性があります。
$invalidIpLong = -1; // 無効な例
$resultInvalid = long2ip($invalidIpLong);
echo "\n無効な整数値 (-1) の変換結果: ";
if ($resultInvalid === false) {
echo "false (変換失敗)\n";
} else {
echo $resultInvalid . "\n"; // PHP 8では "255.255.255.255" が返る
}
PHPのlong2ip
関数は、整数形式で表現されたIPv4アドレスを、一般的な「192.168.1.1」のようなドット区切り形式の文字列に変換する際に使用されます。主に、IPアドレスをデータベースに整数として保存している場合に、それを人間が読める形式で表示する用途で役立ちます。
この関数は、整数値のIPアドレスを引数として一つ受け取ります。変換が成功するとドット区切り形式のIPアドレス文字列を返し、失敗した場合はfalse
を返します。そのため、戻り値がfalse
でないかを確認する処理は、エラー発生時の対応として重要です。
サンプルコードでは、まずip2long
関数を使って文字列形式のIPアドレス「192.168.1.10」を整数値に変換しています。次に、その変換された整数値をlong2ip
関数に渡し、元のドット区切り形式に戻しています。変換の成否は都度チェックしています。また、long2ip
関数はIPv4アドレスの範囲内の整数値を期待するため、無効な整数値(例えば-1)を渡すと、PHP 8では「255.255.255.255」が返されるなど、意図しない結果になる可能性がある点にも注意が必要です。
long2ip
関数は、ip2long
関数で整数に変換されたIPv4アドレスを、元のドット区切り形式の文字列に戻す際に利用します。最も重要な注意点は、変換に失敗した場合に「false」が返されることです。そのため、関数呼び出し後には必ず戻り値が「false」でないかを確認し、エラー処理を行うようにしてください。これにより、プログラムの予期せぬ動作を防ぎ、堅牢性を高めます。この関数はIPv4アドレスに特化しており、IPv6アドレスには対応していません。また、引数にはIPv4の有効な範囲内の整数値を渡すようにしてください。範囲外の不適切な値(負の数など)を渡すと、PHPのバージョンによっては意図しない結果や「false」が返される可能性がありますので、入力値の検証が大切です。