正则表达式:<?php
/**
*[email protected]
*/
function checkIP($ip){
//if(preg_match('/(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))(\.|,)){1,3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))/',$ip))
if(preg_match('/^(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)$/',$ip))
return 1;
else
return 0;
}$str1 = '192.168.0.1';
$str2 = '266.1684.0.1';echo checkIP($str1);
echo checkIP($str2);
?>

解决方案 »

  1.   

    在此基础上修改了下,现在行了
    if(preg_match('/^(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|0[0-9]{2}|[0-9]{1}[0-9]{1}|[0-9]|0)\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|0[0-9]{2}|[0-9]{1}[0-9]{1}|[0-9]|0)\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|0[0-9]{2}|[0-9]{1}[0-9]{1}|[1-9]|0)$/',$ip))
            return 1;
      

  2.   

    if(!strcmp(long2ip(sprintf("%u",ip2long($ip))),$ip))echo(1);这个不是更简单吗,一般的够用了,最多把掩码跟广播排除即可
    难道非要搞得复杂跟耗资源才见水平?