繁体   English   中英

无法使ip2long()工作

[英]Can't get ip2long() to work

我正在尝试比较一些存储为字符串的IP地址。 我读到有关ip2long()将字符串转换为整数的信息,所以我在研究它是否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 long转换是

IP地址是172.26.0.31 --- ip long转换是

IP地址是172.26.0.32 --- ip long转换是

IP地址是172.26.0.33 --- ip long转换是

这是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) 

可能像这样

“由于PHP的整数类型是带符号的,并且许多IP地址在32位体系结构上都将导致负整数,因此您需要使用sprintf()或printf()的“%u”格式化程序来获取无符号IP的字符串表示形式地址。” 来自ip2long php.net文章

这应该工作:

echo " --- The ip long conversion is " . sprintf("%u", ip2long($video_net_key['ipaddress'])) . "<br>";

您需要修剪IP,因为它似乎有尾随空格并且无效:

$iplong = ip2long(trim($video_net_key['ipaddress']));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM