関数の概要
PHPの ip2long 関数は、IPv4形式のIPアドレス(例: “192.168.0.1”)を符号付き32ビット整数に変換するための関数です。ネットワーク関連の処理や、IPアドレスの比較・保存を効率的に行いたい場合に便利です。
パラメータの説明
ip(必須): 変換したいIPv4形式のIPアドレスを示す文字列。例「”127.0.0.1″」のような形式で指定します。
戻り値
正常なIPv4アドレスの場合、そのIPアドレスに対応する符号付き32ビット整数を返します。ただし、変換結果は環境により符号付きの整数となるため、符号なしとして扱いたい場合は別途対処が必要です。
不正なIPアドレス文字列が渡された場合は FALSE を返します。
使用例
基本的な使い方
<?php
$ip = "192.168.1.1";
$long = ip2long($ip);
var_dump($long);
?>
IPv4の文字列を整数に変換し、整数値を出力します。
不正なIPアドレスの処理
<?php
$ip = "999.999.999.999";
$long = ip2long($ip);
if ($long === false) {
echo "無効なIPアドレスです。";
} else {
echo $long;
}
?>
存在しないIPアドレスを変換しようとすると FALSE が返るため、エラーハンドリングに役立ちます。
符号なし整数として扱う方法
<?php
$ip = "255.255.255.255";
$long = ip2long($ip);
$unsignedLong = sprintf("%u", $long);
echo $unsignedLong;
?>
環境によっては ip2long の戻り値が負の値になることがあります。sprintf("%u", 値) を使って符号なし整数として扱い、正しい数値表現を得る方法です。
関連する関数
long2ip–ip2longの逆で、整数からIPv4文字列に変換します。filter_var(FILTER_VALIDATE_IP) – IPアドレスの形式チェックに使われます。inet_pton– IPv4およびIPv6のアドレスをバイナリ表現に変換します。
まとめ
ip2long はIPv4アドレスの文字列を符号付き32ビット整数に変換するPHPの標準関数で、IPアドレスを効率的に扱いたい場合に活用できます。ただし、戻り値の符号付き整数の扱いや無効なアドレスチェックは注意が必要です。実務でのIP管理やログ解析など幅広く利用できる便利な関数です。
