将 ip 短符号转换为 CIDR 符号
convert ip short notation into CIDR notation
假设我有一个像下面这样的列表(在数组 $ips 中),其中包括简单的 ip 地址和 ip 缩写形式的 ip。
125.45.
201.35.1.
35.89.18.27
101.135.2
222.122
78.56.21.146
如何使用 php 将它们转换为 ip 连字符范围?
即结果应该是
125.45.0.0-125.45.255.255
201.35.1.0-201.35.1.255
35.89.18.27
101.135.2.0-101.135.2.255
222.122.0.0-222.122.255.255
78.56.21.146
请注意,这是我做的一个有趣的实验。你的问题有点含糊,你自己也没有表现出任何尝试。话虽这么说,这个功能应该完成你想要的。让我解释一下它的作用:
首先,检查 ip 中的最后一个字符是否为点并将其删除。
其次,数一数你的 IP 有多少个范围。
第三次使用 switch/case
语句(比 if elseif
恕我直言更清晰)根据 IP 范围确定如何处理字符串。
最后定义起始范围和结束范围并连接它们。
终于return结果。
<?php
$ips = array();
$ips[0] = '125.45.';
$ips[1] = '201.35.1.';
$ips[2] = '101.135.2';
$ips[3] = '222.122';
$ips[4] = '78.56.21.146';
foreach($ips as $ip){
echo "\n\nNEW IP RANGE: " . convert_ip($ip) . "\n\n";
}
function convert_ip($ip){
$ip = rtrim($ip, '.');
$ip_count = count( explode('.', $ip) );
switch ($ip_count) {
case 1:
$starting_ip = $ip . '.0.0.0';
$ending_ip = $ip . '.255.255.255';
$return_ip = "$starting_ip-$ending_ip";
break;
case 2:
$starting_ip = $ip . '.0.0';
$ending_ip = $ip . '.255.255';
$return_ip = "$starting_ip-$ending_ip";
break;
case 3:
$starting_ip = $ip . '.0';
$ending_ip = $ip . '.255';
$return_ip = "$starting_ip-$ending_ip";
break;
case 4:
$return_ip = $ip;
break;
default:
$return_ip = 'Unknown';
}
return $return_ip;
}
?>
NEW IP RANGE: 125.45.0.0-125.45.255.255
NEW IP RANGE: 201.35.1.0-201.35.1.255
NEW IP RANGE: 101.135.2.0-101.135.2.255
NEW IP RANGE: 222.122.0.0-222.122.255.255
NEW IP RANGE: 78.56.21.146
假设我有一个像下面这样的列表(在数组 $ips 中),其中包括简单的 ip 地址和 ip 缩写形式的 ip。
125.45.
201.35.1.
35.89.18.27
101.135.2
222.122
78.56.21.146
如何使用 php 将它们转换为 ip 连字符范围?
即结果应该是
125.45.0.0-125.45.255.255
201.35.1.0-201.35.1.255
35.89.18.27
101.135.2.0-101.135.2.255
222.122.0.0-222.122.255.255
78.56.21.146
请注意,这是我做的一个有趣的实验。你的问题有点含糊,你自己也没有表现出任何尝试。话虽这么说,这个功能应该完成你想要的。让我解释一下它的作用:
首先,检查 ip 中的最后一个字符是否为点并将其删除。
其次,数一数你的 IP 有多少个范围。
第三次使用 switch/case
语句(比 if elseif
恕我直言更清晰)根据 IP 范围确定如何处理字符串。
最后定义起始范围和结束范围并连接它们。
终于return结果。
<?php
$ips = array();
$ips[0] = '125.45.';
$ips[1] = '201.35.1.';
$ips[2] = '101.135.2';
$ips[3] = '222.122';
$ips[4] = '78.56.21.146';
foreach($ips as $ip){
echo "\n\nNEW IP RANGE: " . convert_ip($ip) . "\n\n";
}
function convert_ip($ip){
$ip = rtrim($ip, '.');
$ip_count = count( explode('.', $ip) );
switch ($ip_count) {
case 1:
$starting_ip = $ip . '.0.0.0';
$ending_ip = $ip . '.255.255.255';
$return_ip = "$starting_ip-$ending_ip";
break;
case 2:
$starting_ip = $ip . '.0.0';
$ending_ip = $ip . '.255.255';
$return_ip = "$starting_ip-$ending_ip";
break;
case 3:
$starting_ip = $ip . '.0';
$ending_ip = $ip . '.255';
$return_ip = "$starting_ip-$ending_ip";
break;
case 4:
$return_ip = $ip;
break;
default:
$return_ip = 'Unknown';
}
return $return_ip;
}
?>
NEW IP RANGE: 125.45.0.0-125.45.255.255
NEW IP RANGE: 201.35.1.0-201.35.1.255
NEW IP RANGE: 101.135.2.0-101.135.2.255
NEW IP RANGE: 222.122.0.0-222.122.255.255
NEW IP RANGE: 78.56.21.146