对Java一无所知(我认为这是关于java的同一主题的一个主题)和一点关于php,我想知道如何生成,用php ,一个完整的列表可能的IP(0.0.0.0到255.255.255.255),然后我如何使用PHP脚本中的每一个来测试我试图设置的IP验证工具(拿走它们中的每一个并使用它)
对于问题的第二部分,我正在考虑使用foreach语句或使用循环内部的“测试代码”部分来生成每个IP组合,以便在生成IP时对其进行测试。
然后对于第一部分,我不得不承认我被困住了,我的基本知识无法让我找到满意的解决方案 到目前为止,我已经来了:
function gen() {
$n1 = 0;
$n2 = 0;
$n3 = 0;
$n4 = 0;
while ($n4 <= 255 && $n3 <= 255) {
echo $n1.'.'.$n2.'.'.$n3.'.'.$n4++.'<br>';
echo $n1.'.'.$n2.'.'.$n3++.'.'.$n4.'<br>';
}
}
gen();
只是部分地做我想要的。
答案 0 :(得分:3)
而不是为大约40亿个IP4地址生成可能的数据库/存储(假设您只关注IPv4忽略所有IPv6地址),这不是更容易,更实际的是生成随机IP地址组合来测试,您可以使用RegEx轻松验证吗?
以下正则表达式允许您验证从0.0.0.0到255.255.255.255的任何特定IPv4地址
\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
您需要记住的是,即使语法正确,并非所有地址组合都被归类为“有效”。
另一个替代方法(也由@binaryLV提到)使用PHP filter_var($ ip,FILTER_VALIDATE_IP);功能很好,干净。检查标记以帮助过滤http://php.net/manual/en/function.filter-var.php
<强>更新强>
对于基于IP位置的服务,我建议使用IPInfoDB等服务。它们提供API (see here)使用,允许您调用其服务,从而减少将信息存储在数据库中的需要。否则,它们提供database of IP addresses (see here)到xxx.xxx.xxx的精度,也可以下载。
答案 1 :(得分:0)
您需要嵌套循环:
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";
}
}
}
}