filter_var使用的默认正则表达式是什么?

时间:2015-12-05 21:19:49

标签: php regex default filter-var

在某处提到了PHP函数 filter_var 使用的正则表达式吗?

2 个答案:

答案 0 :(得分:0)

即使您知道要查找的内容,源代码也可能难以遍历。我已经链接了下面定义filter_var工作方式的文件。

https://github.com/php/php-src/blob/master/ext/filter/filter.c顶部附近,您应该能够看到filter_list数组,该数组将PHP过滤器常量与其相应的过滤函数相匹配。 filter_var是在此文件中定义的,但我们现在可以忽略它。

过滤器本身都在https://github.com/php/php-src/blob/master/ext/filter/logical_filters.c中定义。

您可能会注意到,并非所有过滤器都使用正则表达式。确实,乍一看,我发现使用任何正则表达式模式的唯一一个就是php_filter_validate_email。其他人似乎具有使他们有效运行所必需的替代逻辑,并且不需要正则表达式来过滤其内容。

我上面的解释已简化为回答问题。我建议您在可能的情况下将filter_var与适当的标志一起使用,而不要尝试反向工程或重新发明轮子,因为这涉及到附加的逻辑,这会使您的代码简单得多。

答案 1 :(得分:-1)

是的,它们主要有4种类型:

Validate filters
Sanitize filters
Other filters
Filter flags

更多信息:

  

http://php.net/manual/en/filter.filters.php