首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让ip2long()工作

无法让ip2long()工作
EN

Stack Overflow用户
提问于 2016-02-18 16:05:54
回答 2查看 723关注 0票数 0

我试图比较一些作为字符串存储的IP地址。我读到了关于ip2long()将字符串转换为整数的文章,所以我正在使用它,看看它是否能做我想做的事情。所以,最初,我只是想看看转换后的IP是什么样子。我编写了下面的代码来查看该代码,但没有进行任何转换。我不知道我做错了什么。以下是代码:

代码语言:javascript
复制
<?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()示例,并转换为整数:

代码语言:javascript
复制
string(12) "172.26.0.10 "
bool(false)
string(12) "172.26.0.31 "
bool(false)
string(12) "172.26.0.32 "
bool(false) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-18 18:23:12

您需要修剪IP,因为它似乎有一个拖尾空间,并且无效:

代码语言:javascript
复制
$iplong = ip2long(trim($video_net_key['ipaddress']));
票数 0
EN

Stack Overflow用户

发布于 2016-02-18 16:19:55

可能是类似这样的事情

“由于PHP的整数类型是有符号的,而且许多IP地址将在32位体系结构上产生负整数,所以您需要使用sprintf()或printf()的"%u”格式化程序来获得无符号IP地址的字符串表示形式。“http://php.net/manual/en/function.ip2long.php

这应该是可行的:

代码语言:javascript
复制
echo " --- The ip long conversion is " . sprintf("%u", ip2long($video_net_key['ipaddress'])) . "<br>";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35486488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档