亲历PHP面试题——写一个验证IP地址的isValidIp函数

  下午两点,接到公司的面试电话,这次是电话面试,主要问了PHP函数,数据库性能优化,Apache规则等基础、高级的都有的东西,一时间还真有点招架不住。第一个题是关于PHP函数的问题,是要求写一个验证IP地址的函数,当时写的让面试官明显看出漏洞来了,“127.000.00023.0045”这验证吗?囧了~~~

  自已一个人在教室没什么事,总结一下,巩固一下,反思一下。写了一个验证IP的isValidIp函数,验证没问题~~~

<?PHP

    function isValidIp($str){
        $str = trim($str);
        if(preg_match('/\.0\d*/',$str,$array)){
            return false;
        }
        if(ip2long($str) == -1){
            return false;
        }
        return true;
    }
    $ip = "109.254.34.33";
    if(isValidIp($ip)){
        echo "ol";
    }else {
        echo 'Not';
    }

?>

 

  首先,对字符串中的前置0进行匹配,如果存在则返回false;这里的匹配规则是以“.”为界限的,很明显第一个如果有前置0了怎么办?偶然,ip2long却给我解决了;

  然后使用ip2long函数进行测试,这个函数如果对输入的字符串明显不符合ip地址规则,会返回-1,这里判定false时返回false;这里还可以解决第一个的问题,当输入“00012.23.3.4”时,ip2long也会返回-1,这里正好得到验证。

  验证测试数据:

1   192.168.034.34
2   012.23.43.56
3   123.255.23.34
4   123.256.34.45
5   234.-1.234.45

 

  测试无误,可惜面试时没想到~~~~

posted @ 2012-05-21 16:41  小 伍  阅读(1799)  评论(1编辑  收藏  举报