我可以检查IP是否在专用网络中?

<?php
function isLocalIPAddress($IPAddress)
{
    return ( !filter_var($IPAddress, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) );
}

var_dump( isLocalIPAddress('127.0.0.1') ); // false
var_dump( isLocalIPAddress('192.168.1.20') ); // true
var_dump( isLocalIPAddress('64.233.160.0') ); // false

为什么给予而不是给予?
127.0.0.1不是私有IP吗?
更新
我使用的解决方案:
<?php
function isLocalIPAddress($IPAddress)
{
    if( strpos($IPAddress, '127.0.') === 0 )
        return true;

    return ( !filter_var($IPAddress, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) );
}

最佳答案

根据test run,可以看出PHP5.2.0→5.3.5的输出为false,而PHP5.3.6→7.0.0Tea1和HHVM3.3.1→3.8的输出为true
为了解决您的问题,您可以检查PHP版本,如果它在第一个范围,则添加:

function isLocalIPAddress($IPAddress)
{
    if($IPAddress == '127.0.0.1'){return true;} <-- add this
    return ( !filter_var($IPAddress, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) );
}

10-07 21:08