PHP Conference Japan 2024

long2ip

(PHP 4, PHP 5, PHP 7, PHP 8)

long2ip將長整數位址轉換為 (IPv4) 網際網路標準點分十進位制格式的字串

說明

long2ip(int $ip): string

函式 long2ip() 從長整數表示法產生點分十進位制格式的網際網路位址(例如:aaa.bbb.ccc.ddd)。

參數

ip

以長整數表示的正確位址。

傳回值

string 型態傳回網際網路 IP 位址。

更新日誌

版本 說明
8.4.0 傳回類型從 string|false 改為 string
7.1.0 參數 ip 的類型已從 字串 改為 整數

注意事項

備註:

在 32 位元架構上,將 IP 位址的整數表示法從 字串 轉換為 整數 時,若數字超過 PHP_INT_MAX 將無法得到正確的結果。

另請參閱

  • ip2long() - 將包含 (IPv4) 網際網路通訊協定位址的字串轉換為長整數

新增註記

使用者貢獻的註記 2 則註記

Gabriel Malca
18 年前
如果函式不存在

<?
if (!function_exists("long2ip")) {
function long2ip($long) {
// 有效範圍:0.0.0.0 -> 255.255.255.255
if ($long < 0 || $long > 4294967295) return false;
$ip = "";
for ($i=3;$i>=0;$i--) {
$ip .= (int)($long / pow(256,$i));
$long -= (int)($long / pow(256,$i))*pow(256,$i);
if ($i>0) $ip .= ".";
}
return $ip;
}
}
?>
steve at computurn dot com
6 年前
對於 32 位元安全的 long2ip,可以接受字串或帶符號整數輸入,請嘗試

function safelong2ip($long) {
$binStr = sprintf("%032s", decbin((float)$long));
if (strlen($binStr) != 32) {
throw new Exception("無效的 IPv4 子網路!");
}

$ipArr = [];
for ($i = 0; $i < 4; ++$i) {
$ipArr[] = bindec(substr($binStr, $i*8, 8));
}

return implode('.', $ipArr);
}
To Top