使用PHP,如何验证字符串是否是有效的IP?
有效字符串的示例:
无效字符串的示例:
我当前的脚本使用此代码,但这不足以满足我的需求:
if(strpos($input, '.') !== false)
{
// There is a period
}
else
{
// No Period
}
Run Code Online (Sandbox Code Playgroud)
因此,有人可以建议我如何验证字符串是否是有效的IP?
the*_*NaD 38
尝试使用filter_var
例:
if(filter_var('127.0.0.1', FILTER_VALIDATE_IP) !== false) {
// is an ip
} else {
// is not an ip
}
Run Code Online (Sandbox Code Playgroud)
如果你现在有一个字符串像foo,127.0.0.bla或类似的,filter_var将返回false.IP地址有效像10.1.10.10,::1被视为有效.
注意
此外,你必须检查!== false,因为它filter_var返回值,如果它是有效的,false如果它不是(例如filter_var("::1", FILTER_VALIDATE_IP)将返回::1,不是 true).
旗
您还可以使用以下某些标志:
FILTER_FLAG_IPV4(过滤IPV4)
FILTER_FLAG_IPV6(IPV6过滤器)
FILTER_FLAG_NO_PRIV_RANGE(禁止私有范围内的IP)
FILTER_FLAG_NO_RES_RANGE(禁止保留范围内的IP)
filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)
如果$ip是127.0.0.1该功能将返回false.
通知笨拙::1是确定的FILTER_FLAG_NO_PRIV_RANGE,但127.0.0.1并非如此.
zer*_*kms 26
$valid = ip2long($ip) !== false;
Run Code Online (Sandbox Code Playgroud)