使用PHP的filter_var函数验证IP地址

2018-08-30 0 条评论 72 次阅读 12 人点赞

PHPfilter_var函数可以验证IP地址是否有效,并且可以进一步验证待验证的IP是否是私有或保留范围内的IPv4 IP,IPv6 IP。

首先,我们来看看这个函数的相关信息:

定义和用法

filter_var() 函数通过指定的过滤器过滤变量。

如果成功,则返回已过滤的数据,如果失败,则返回 false。

语法

filter_var(variable, filter, options)

参数描述
variable必需。规定要过滤的变量。
filter可选。规定要使用的过滤器的 ID。
options规定包含标志/选项的数组。检查每个过滤器可能的标志和选项。

 

这个函数不仅可以用于验证IP也可以验证邮件、URL等,本文只讨论验证IP。当然这个函数只支持PHP版本> = 5.2.0,相信如今也没多少人会用这么低的版本了吧。

1.验证IP地址

要简单检查IP地址是否有效,请执行以下操作:

如果IP地址有效函数将返回传入的$ip的值,否则返回false。这个用法用法适用于任何有效的IP地址,包括IPv4,IPv6,私有和保留范围内的IP。

2.验证IPv4 IP地址

要验证IPv4 IP地址(例如113.120.3.1),则需要在函数第三个参数传入FILTER_FLAG_IPV4。

下面这个对常规IPv4 IP地址以及私有和保留范围的IP地址有效。

3.验证不包括私有范围地址IPv4地址

要验证不包括私有范围地址IPv4地址(例如常见的192.168.0.1),则需要在第三个参数里同时传入FILTER_FLAG_NO_PRIV_RANGE,以 | 分隔开,下面是例子。

例子中使用192.168.0.1不会通过检测,而使用111.112.1.1就可以通过检测。

4.验证IPv6地址

这个简单,跟IPV4的用法类似,只需要在第三个参数传入FILTER_FLAG_IPV6 就可以了。

这里以一个IPV4地址(111.112.1.1)和一个IPV6地址(2404:6800:8005::68)为例

5.保留范围地址

IP地址中存在大量保留的IP地址范围(关于保留地址可以查看这里https://zh.wikipedia.org/wiki/%E4%BF%9D%E7%95%99IP%E5%9C%B0%E5%9D%80)。要验证这些地址,则需要在第三个参数中传入FILTER_FLAG_NO_RES_RANGE,例子:

6.不包括保留范围地址和私有地址

最后一个示例将验证任何不是保留范围或私有的IPv4和IPv6 IP地址,需要在第三个参数传入FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE  例子:

当然,也可以通过添加“| FILTER_FLAG_IPV4”或“| FILTER_FLAG_IPV6”进一步将最终示例限制为仅IPv4或IPv6地址,举个例子:

最后,各种参数的使用请参看http://www.runoob.com/php/php-ref-filter.html

 

希望本文对你有所帮助~

喜欢这篇文章的话可以扫描下方二维码支持我~

《MySQL优化SQL查询语句的30条建议》

文章来自清渭技术小站,转载请注明出处

Kiwi

Valar Morghulis

文章评论(0)