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

Is filter_id() supposed to be an integer or a string in PHP?

这是

的后续问题

如果我尝试 echo filter_id('validate_email') 之类的东西,我会得到 274,但我希望它能给出 FILTER_VALIDATE_EMAIL,如 https://www.php.net/manual/en/filter.filters.validate.php 中所述。不明白257, 258, 520, 521, 1024这些数字代表什么?为什么我们为每种类型的过滤器设置 filter_id 的两个值(数字和字符串)?

在幕后,CONSTANT 名称指的是整数值。字符串名称只是让我们程序员更易读的东西。

整数用作过滤器字符串的位 (on/off)。使用按位运算,引擎检查其标志以查看是否需要检查验证。这可以在 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.