这是对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值(数字和字符串)?
答案 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中。