-
博文分类专栏
- Jquery基础教程
-
- 文章:(15)篇
- 阅读:46583
- shell命令
-
- 文章:(42)篇
- 阅读:154304
- Git教程
-
- 文章:(36)篇
- 阅读:234923
- leetCode刷题
-
- 文章:(76)篇
- 阅读:131948
-
PHP自带方法验证邮箱、URL、IP是否合法2016-10-09 21:42 阅读(6931) 评论(0)
一、简介
以前用PHP验证邮箱、URL、IP是否合法都是通过自己写正则来实现,但是有时候脑子发昏,可能会写出一个不是完全正确的正则,导致验证出错,今天发现原来PHP本身自带了验证函数,可以针对邮箱、URL、IP是否合法进行验证。主要使用的是filter_var函数。
mixed filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]]
1.1 参数 描述
variable 必需。规定要过滤的变量,在过滤前,会被转换成字符串。
filter 可选。规定要使用的过滤器的 ID。
options 规定包含标志/选项的数组。检查每个过滤器可能的标志和选项。
1.2 返回值
如果验证通过,则返回验证的数据,否则返回false。
1.3 过滤器简介
ID 名称 描述 FILTER_CALLBACK 调用用户自定义函数来过滤数据。 FILTER_SANITIZE_STRING 去除标签,去除或编码特殊字符。 FILTER_SANITIZE_STRIPPED “string” 过滤器的别名。 FILTER_SANITIZE_ENCODED URL-encode 字符串,去除或编码特殊字符。 FILTER_SANITIZE_SPECIAL_CHARS HTML 转义字符 ‘”<>& 以及 ASCII 值小于 32 的字符。 FILTER_SANITIZE_EMAIL 删除所有字符,除了字母、数字以及 !#$%&’*+-/=?^_`{|}~@.[] FILTER_SANITIZE_URL 删除所有字符,除了字母、数字以及 $-_.+!*’(),{}|\\^~[]`<>#%”;/?:@&= FILTER_SANITIZE_NUMBER_INT 删除所有字符,除了数字和 +- FILTER_SANITIZE_NUMBER_FLOAT 删除所有字符,除了数字、+- 以及 .,eE。 FILTER_SANITIZE_MAGIC_QUOTES 应用 addslashes()。 FILTER_UNSAFE_RAW 不进行任何过滤,去除或编码特殊字符。 FILTER_VALIDATE_INT 在指定的范围以整数验证值。 FILTER_VALIDATE_BOOLEAN 如果是 “1″, “true”, “on” 以及 “yes”,则返回 true,如果是 “0″, “false”, “off”, “no” 以及 “”,则返回 false。否则返回 NULL。 FILTER_VALIDATE_FLOAT 以浮点数验证值。 FILTER_VALIDATE_REGEXP 根据 regexp,兼容 Perl 的正则表达式来验证值。 FILTER_VALIDATE_URL 把值作为 URL 来验证。 FILTER_VALIDATE_EMAIL 把值作为 e-mail 来验证。 FILTER_VALIDATE_IP 把值作为 IP 地址来验证。 更多的过滤器,可以查看官方网站:PHP过滤器。
二、案例
2.1 验证邮箱是否正确
$email1 = 'dq@findme.wang'; $result = filter_var($email1, FILTER_VALIDATE_EMAIL); var_dump($result); $email2 = 'dq.findme.wang'; $result = filter_var($email2, FILTER_VALIDATE_EMAIL); var_dump($result);
第一个是邮箱,第二个不是,返回结果如下:
通过官方文档,我们得知,FILTER_FLAG_EMAIL_UNICODE是依据RFC 822中定义的规则来检验电子邮件地址是否合法,但不支持注释和空格折叠以及无点域名。
2.2 、ip地址的验证
$ip = '60.205.21.85'; $result = filter_var($ip, FILTER_VALIDATE_IP); var_dump($result);
2.3 、url的验证
$url = 'http://www.findme.wang/blog/index.html'; $result = filter_var($url, FILTER_VALIDATE_URL); var_dump($result);
如果同时验证两个数据,可以使用filter_var_array函数,如下:
$url1 = 'http://www.findme.wang/blog/index.html'; $url2 = 'test'; $result = filter_var_array([$url1, $url2], FILTER_VALIDATE_URL); var_dump($result);
三、备注
filter_var_array() - 获取多个变量并且过滤它们。
filter_input() - 通过名称获取特定的外部变量,并且可以通过过滤器处理它。
filter_input_array() - 获取一系列外部变量,并且可以通过过滤器处理它们。
1