在PHP中filter_id()应该是整数还是字符串?

时间:2020-04-04 14:25:54

标签: php filter php-7

这是对PHP - what is filter_id() used for?

的跟进问题

如果我尝试使用类似echo filter_id('validate_email')的方法,则会得到274,但我希望它能像https://www.php.net/manual/en/filter.filters.validate.php所述给FILTER_VALIDATE_EMAIL。我不明白像257, 258, 520, 521, 1024这样的数字代表什么?为什么每种类型的过滤器都有两个filter_id值(数字和字符串)?

1 个答案:

答案 0 :(得分:1)

在内部,常量名称是指整数值。字符串名称只是使它对我们的程序员更易读。

整数用作过滤器字符串的位(开/关)。引擎使用按位运算,检查其标志,以查看是否需要检查验证。可以在PHP代码中看到,就像在https://github.com/php/php-src/blob/master/ext/filter/logical_filters.c上一样。

您可以看到使用定义将CONSTANT名称映射到CONSTANT值的实际部分在文件filter_private.h https://github.com/php/php-src/blob/f13d0a72d5cf92785c91ffc33c27df3df3f8e96e/ext/filter/filter_private.h#L64中。

相关问题