用 PHP 如何实现输出所有 IP 地址?

2016 年 7 月 1 日
 lslqtz
主要是因为是 1.1.1.1 这种形式的,脑子直接抽了。
想输出全部 IP 地址,包括保留地址和内网地址,姿势越优雅(逃)越好~~
4044 次点击
所在节点    PHP
24 条回复
yangqi
2016 年 7 月 2 日
for($i=0; $i <= 4294967295; $i++) {
print long2ip($i);
}
lslqtz
2016 年 7 月 2 日
已感谢,真-优雅
pubby
2016 年 7 月 2 日
$ip:0~2^32-1 long2ip($ip)
lslqtz
2016 年 7 月 2 日
@yangqi 但是我发现会输出 0.*.*.*的 IP 。。
lslqtz
2016 年 7 月 2 日
@yangqi
0.0.0.0
0.0.0.1
0.0.0.2
0.0.0.3
0.0.0.4
0.0.0.5
0.0.0.6
0.0.0.7
0.0.0.8
0.0.0.9
0.0.0.10
0.0.0.11
我试着执行了。。
aprikyblue
2016 年 7 月 2 日
for($i=0; $i <= 255; $i++) {
for($j=0; $j <= 255; $j++) {
for($k=0; $k <= 255; $k++) {
for($l=0; $l <= 255; $l++) {
print sprintf("%d.%d.%d.%d", $i, $j, $k, $l);
}
}
}
}
yangqi
2016 年 7 月 2 日
0.0.0.0 - 0.255.255.255 是保留地址,你不是要包括保留地址么
lslqtz
2016 年 7 月 2 日
@aprikyblue 好评,本来我也想用 for ,但我感觉自己写没思路,写出来估计全会是连着的。。
lslqtz
2016 年 7 月 2 日
@yangqi 长见识了,感谢。
yangqi
2016 年 7 月 2 日
@lslqtz 这个输出的是所有的 IPv4 的地址
lslqtz
2016 年 7 月 2 日
@yangqi 明白, IPv6 还暂时碰不到
vibbow
2016 年 7 月 2 日
友情提示, 1 楼的代码需要 真-64 位 PHP 执行
Snowden
2016 年 7 月 2 日
@vibbow +1
notgod
2016 年 7 月 2 日
for($n1=0; $n1 < 256; $n1++) {
for($n2=0; $n2 < 256; $n2++) {
for($n3=0; $n3 < 256; $n3++) {
for($n4=0; $n4 < 256; $n4++) {
echo $n1 . "." . $n2 . "." . $n3 . "." . $n4 . "\n";
}
}
}
}
shyling
2016 年 7 月 2 日
4 层 for
0..2**32 再转成 ip 的格式
shyling
2016 年 7 月 2 日
@shyling 忘了一个点。。
muziyue
2016 年 7 月 2 日
不就是加强版的 99 乘法表么
lslqtz
2016 年 7 月 2 日
@vibbow 还好我不用 win 。。
jhdxr
2016 年 7 月 2 日
@lslqtz win 下又不是没有 64 位的 php http://windows.php.net/download/ 里不是就有么,你也可以自己编译一份,这黑的真是莫名其妙
lslqtz
2016 年 7 月 2 日
@jhdxr 知道啊。。 win 很多环境库是 32 位, 64 位用过,不是黑。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/289726

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX