2024年PHP大会日本站

long2ip

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

long2ip将长整数地址转换为 (IPv4) Internet 标准点分十进制格式的字符串

描述

long2ip(int $ip): string

函数 long2ip() 从长整数表示生成点分十进制格式的 Internet 地址(例如:aaa.bbb.ccc.ddd)。

参数

ip

长整数表示的有效地址。

返回值

返回 Internet IP 地址作为 string

变更日志

版本 描述
8.4.0 返回类型从 string|false 更改为 string
7.1.0 ip 的参数类型已从 string 更改为 int

备注

注意:

在32位架构上,将IP地址的整数表示从 string 转换为 int 对于超过 PHP_INT_MAX 的数字将不会给出正确的结果。

参见

  • ip2long() - 将包含 (IPv4) Internet 协议点分十进制地址的字符串转换为长整数

添加注释

用户贡献的注释 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