我试图比较一些作为字符串存储的IP地址。我读到了关于ip2long()将字符串转换为整数的文章,所以我正在使用它,看看它是否能做我想做的事情。所以,最初,我只是想看看转换后的IP是什么样子。我编写了下面的代码来查看该代码,但没有进行任何转换。我不知道我做错了什么。以下是代码:
<?php
foreach($form->data[vicondb] as $video_net_key)
{
if ($video_net_key['ipaddress'] != null)
{
echo "The IP address is " . $video_net_key['ipaddress'];
$iplong = ip2long($video_net_key['ipaddress']);
echo " --- The ip long conversion is " . $iplong . "<br>";
}
} // End foreach($form->data[vicondb] as $video_net_key)
echo "End of both foreach statements<br>";
?>下面是一个结果的样本:
IP地址为172.26.0.10 -- ip长转换为 IP地址为172.26.0.31 -- ip长转换为 IP地址为172.26.0.32 -- ip长转换为 IP地址为172.26.0.33 -- ip长转换为
下面是IP的var_dump()示例,并转换为整数:
string(12) "172.26.0.10 "
bool(false)
string(12) "172.26.0.31 "
bool(false)
string(12) "172.26.0.32 "
bool(false) 发布于 2016-02-18 18:23:12
您需要修剪IP,因为它似乎有一个拖尾空间,并且无效:
$iplong = ip2long(trim($video_net_key['ipaddress']));发布于 2016-02-18 16:19:55
可能是类似这样的事情
“由于PHP的整数类型是有符号的,而且许多IP地址将在32位体系结构上产生负整数,所以您需要使用sprintf()或printf()的"%u”格式化程序来获得无符号IP地址的字符串表示形式。“http://php.net/manual/en/function.ip2long.php。
这应该是可行的:
echo " --- The ip long conversion is " . sprintf("%u", ip2long($video_net_key['ipaddress'])) . "<br>";https://stackoverflow.com/questions/35486488
复制相似问题