【PHP8.x】long2ip関数の使い方

long2ip関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

long2ip関数は、整数で表現されたインターネットプロトコルバージョン4(IPv4)のアドレスを、人間が読みやすいドット区切りの文字列形式に変換する関数です。IPアドレスは、データベースへの格納効率や検索速度を考慮して、32ビットの整数値として保存されることがあります。この関数は、そのように整数として保存されたIPアドレスを、「192.168.0.1」のような標準的な文字列表現に戻す際に使用されます。引数として変換したいIPアドレスを表す整数を一つ受け取ります。処理が成功した場合はドット区切りのIPv4アドレス文字列を返しますが、引数が有効なアドレスを表す整数でない場合は false を返します。システムのアーキテクチャによっては、大きなIPアドレスが負の整数として表現されることがありますが、この関数はそれも正しく解釈して変換します。なお、この関数の逆の変換、つまりIPv4アドレス文字列を整数に変換するためには ip2long 関数を使用します。この関数はIPv4にのみ対応しており、IPv6アドレスの変換には使用できない点に注意してください。

構文(syntax)

1string|false long2ip(int $integer_ip)

引数(parameters)

int $ip

  • int $ip: IPアドレスを表す整数

戻り値(return)

string | false

指定されたIPv4アドレスの整数表現を、ドット区切りの標準的なIPv4アドレス文字列に変換します。変換に失敗した場合はfalseを返します。

サンプルコード

PHPのIPアドレス整数・文字列変換

1<?php
2
3/**
4 * long2ip() 関数は、整数形式のIPアドレスをドット区切り形式の文字列に変換します。
5 * 主に、データベースに整数として保存されたIPアドレスを表示する際などに使用されます。
6 *
7 * このサンプルコードでは、まずドット区切りIPアドレスを整数に変換し、
8 * その後 long2ip() を使って元のドット区切り形式に戻す方法を示します。
9 */
10
11// 例として、ドット区切り形式のIPv4アドレスを定義します。
12$ipAddressString = "192.168.1.10";
13
14// ip2long() 関数を使用して、ドット区切り形式のIPアドレスを整数形式に変換します。
15// 成功すると整数、失敗すると false が返されます。
16$ipAddressLong = ip2long($ipAddressString);
17
18// 変換が成功したかを確認します。
19if ($ipAddressLong === false) {
20    echo "エラー: IPアドレス '{$ipAddressString}' の整数への変換に失敗しました。\n";
21} else {
22    echo "元のIPアドレス (文字列): " . $ipAddressString . "\n";
23    echo "変換されたIPアドレス (整数): " . $ipAddressLong . "\n\n";
24
25    // long2ip() 関数を使用して、整数形式のIPアドレスをドット区切り形式の文字列に戻します。
26    // 成功するとIPアドレスの文字列、失敗すると false が返されます。
27    // 通常、ip2long() で得られた有効な整数を渡す限り、変換は成功します。
28    $convertedIpAddressString = long2ip($ipAddressLong);
29
30    // 変換が成功したかを確認します。
31    if ($convertedIpAddressString === false) {
32        echo "エラー: 整数 '{$ipAddressLong}' からIPアドレスへの変換に失敗しました。\n";
33    } else {
34        echo "整数から再変換したIPアドレス (文字列): " . $convertedIpAddressString . "\n";
35    }
36}
37
38// 無効な整数値を試す(例: 負の値や大きすぎる値)
39// long2ip() は基本的にIPv4のアドレス範囲内の整数値を期待します。
40// 範囲外の値を渡すと意図しない結果や false が返る可能性があります。
41$invalidIpLong = -1; // 無効な例
42$resultInvalid = long2ip($invalidIpLong);
43echo "\n無効な整数値 (-1) の変換結果: ";
44if ($resultInvalid === false) {
45    echo "false (変換失敗)\n";
46} else {
47    echo $resultInvalid . "\n"; // PHP 8では "255.255.255.255" が返る
48}

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」が返される可能性がありますので、入力値の検証が大切です。

関連コンテンツ