<?php
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 验证IP地址
* @param IP string字符串 一个IP地址字符串
* @return string字符串
*/
function solve( $IP )
{
$arr=explode('.',$IP);
if(checkIpV4($arr)){
return 'IPv4';
}
$arr=explode(':',$IP);
return checkIpV6($arr)?'IPv6':'Neither';
}
function checkIpV6($arr){
$len=count($arr);
if($len<8){
return false;
}
foreach($arr as $item){
if(checkv6($item)==false){
return false;
}
}
return true;
}
function checkv6($item){
$len=strlen($item);
if($len<=0 || $len>4){
return false;
}
$zeroCount=0;
for($i=0;$i<$len;$i++){
$c=$item[$i];
if(is_numeric($c)){
if($c=='0'){
$zeroCount++;
}
}else{
$c=strtolower($c);
if($c<'a' || $c>'f'){
return false;
}
}
}
if($zeroCount>1 && $zeroCount==$len){
return false;
}
return true;
}
function checkIpV4($arr){
$len=count($arr);
if($len<4){
return false;
}
foreach($arr as $item){
if(!is_numeric($item)){
return false;
}
$sublen=strlen($item);
if($sublen<=0 || ($sublen>1 && $item[0]=='0')){
return false;
}
$num=intval($item);
if($num<0 || $num>255){
return false;
}
}
return true;
}
验证IP地址 IPV4 IPV6
猜你喜欢
转载自blog.csdn.net/qq_40192867/article/details/123201642
今日推荐
周排行