PHP 8.5.8 Released!

long2ip

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

long2ip将长整型转化为字符串形式带点的互联网标准格式地址(IPV4)

说明

function long2ip(int $ip): string

long2ip() 函数通过长整型的表达形式转化生成带点格式的互联网地址(例如:aaa.bbb.ccc.ddd )。

参数

ip

合格的地址,长整型的表达形式。

返回值

string 的形式返互联网 IP 地址。

更新日志

版本 说明
8.4.0 返回类型从 string |false 改为 string
7.1.0 参数 ip 的类型从 string 改成 int

注释

注意:

在 32 位架构中,从 string 转换 int 整型形式的 ip 地址将有可能导致错误的结果,因为结果数字超出了 PHP_INT_MAX 限制。

参见

  • ip2long() - 将 IPV4 的字符串互联网协议转换成长整型数字

发现了问题?

了解如何改进此页面提交拉取请求报告一个错误
+添加备注

用户贡献的备注 2 notes

up
10
Gabriel Malca
20 years ago
If the function doesn't exist:
<?
 if (!function_exists("long2ip")) {
 function long2ip($long) {
 // Valid range: 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;
 }
 }
?>
up
5
steve at computurn dot com
7 years ago
For a 32bit safe long2ip, which can accept string or signed integer input, try:
 function safelong2ip($long) {
 $binStr = sprintf("%032s", decbin((float)$long));
 if (strlen($binStr) != 32) {
 throw new Exception("Invalid IPv4 subnet!");
 }
 $ipArr = [];
 for ($i = 0; $i < 4; ++$i) {
 $ipArr[] = bindec(substr($binStr, $i*8, 8));
 }
 return implode('.', $ipArr);
 }
+添加备注

AltStyle によって変換されたページ (->オリジナル) /