php filter_var 用法

Jackey PHP 3,670 次浏览 没有评论

语法:filter_var(variable, filter, options)

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

PHP Filters

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 地址来验证
  1. # 使用举例
  2. # php - filter 参数
  3.  
  4. # >> - - - - - - <<
  5. # FILTER_CALLBACK - - - 调用用户自定义函数处理数据
  6. function checkVar($value){
  7. echo $value; // true.false@gmail.com
  8. }
  9. //> 变量
  10. $var = "true.false@gmail.com";
  11. filter_var($var,FILTER_CALLBACK,array('options'=>'checkVar'));
  12.  
  13. $str = 'abc';
  14. $str = filter_var($str, FILTER_CALLBACK, array('options'=>function($value){
  15. return strtoupper($value);
  16. }));
  17. echo $str;
  18. # >> - - - - - - <<
  19. # FILTER_VALIDATE_INT - - - 在指定的范围以整数验证值
  20. $integer = 12;
  21. // FILTER_VALIDATE_INT 验证成功返回指定的$integer值
  22. // FILTER_VALIDATE_INT 如果存在default参数,验证失败时返回指定default值
  23. // FILTER_VALIDATE_INT 如果不存在default参数,验证失败时返回false值
  24. $mix = filter_var($integer,FILTER_VALIDATE_INT,array(
  25. 'options' => array(
  26. 'min_range' => 0,
  27. 'max_range' => 11,
  28. 'default' => 6 //> 当前验证失败时返回指定值
  29. ),
  30. // 非必选 - 如省略,默认采用十进制比较
  31. // FILTER_FLAG_ALLOW_OCTAL 采用八进制 进行比较
  32. // FILTER_FLAG_ALLOW_HEX 采用十六进制进行比较
  33. 'flags' => FILTER_FLAG_ALLOW_OCTAL, ));
  34.  
  35. var_dump($mix); // 6
  36.  
  37. # >> - - - - - - <<
  38. # FILTER_VALIDATE_IP - - - 把值作为IP地址来验证
  39. $ip = "192.168.0.1";
  40. // FILTER_VALIDATE_IP 验证成功返回当前$ip值
  41. // FILTER_VALIDATE_IP 验证失败时返回false值
  42. $result = filter_var($ip,FILTER_VALIDATE_IP); // 192.168.0.1
  43. var_dump( $result );
  44. // FILTER_VALIDATE_IP 默认采用ip4验证 支持一下其他验证FLAG
  45. // FILTER_FLAG_IPV4 ip4地址验证
  46. // FILTER_FALG_IPV6 ip6地址验证
  47. // FILTER_FLAG_NO_PRIV_RANGE 过滤私有地址 (百度)
  48. // FILTER_FLAG_NO_RES_RANGE 过滤保留地址 (百度)
  49. $result = filter_var($ip,FILTER_VALIDATE_IP,FILTER_FLAG_IPV6); // false
  50.  
  51. # >> - - - - - - <<
  52. # FILTER_VALIDATE_URL - - - 把值作为url来验证
  53. $url = "https://tianfumeishi.cn/a/l?a=12";
  54. // 省略第三个参数:默认验证所有的url地址
  55. $uriResult = filter_var($url,FILTER_VALIDATE_URL);
  56. var_dump($uriResult);
  57. // FILTER_VALIDATE_URL 支持flag参数 (用于第三个参数)
  58. // FILTER_FLAG_QUERY_REQUIRED 要求url中必须包含查询字符串 (验证?结尾的url地址)
  59. // FILTER_FLAG_PATH_REQUIRED 要求格式必须包含为/结尾的路径或者包含文件 (验证域名后紧跟(如/index)参数的地址)
  60.  
  61. # >> - - - - - - <<
  62. # FILTER_VALIDATE_REGEXP - - - 使用正则验证值
  63. $reg = "12Sd*";
  64. // FILTER_VALIDATE_REGEXP 验证成功返回当前验证值
  65. // FILTER_VALIDATE_REGEXP 验证失败返回false值
  66. $regResult = filter_var($reg,FILTER_VALIDATE_REGEXP,array(
  67. 'options' => array('regexp'=>"/^[\d]{0,2}[a-zA-Z]{0,2}\*$/")
  68. ));
  69. var_dump($regResult); // 12Sd*
  70. # 更多使用案例 参考文档和手册

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Go