我知道我可以通过首先使用 PHP 内置函数将 IP 地址转换为十进制表示法来轻松做到这一点up2long
and long2ip
。我只是希望能够使用标准 IP 地址表示法做同样的事情作为练习。
我想的问题是这样的:给定一个起始IP地址,比如192.168.1.100,和一个结束IP地址,比如201.130.22.10。编写程序打印该范围内的所有地址号(192.168.1.100、192.168.1.101、…、201.130.22.9、201.130.22.10)。
我在想也许可行的方法是制作一个嵌套的for
在 a 内循环while
条件,直到起始地址的第一个八位字节与结束地址的第一个八位字节匹配。然后对第二个八位字节执行相同的代码块,依此类推,直到程序到达结束地址并完成。
我最近才开始学习编程,所以很可能我的思维和/或编写代码远非优雅。如果是你的话,你会怎么做?
像这样的东西:
<?php
// works only for valid range
$start_ip = '10.0.0.1';
$end_ip = '10.0.20.1';
$start_arr = explode('.',$start_ip);
$end_arr = explode('.',$end_ip);
while($start_arr <= $end_arr)
{
echo implode('.',$start_arr) . '<br>';
$start_arr[3]++;
if($start_arr[3] == 256)
{
$start_arr[3] = 0;
$start_arr[2]++;
if($start_arr[2] == 256)
{
$start_arr[2] = 0;
$start_arr[1]++;
if($start_arr[1] == 256)
{
$start_arr[1] = 0;
$start_arr[0]++;
}
}
}
}
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)