【问题标题】:Is filter_id() supposed to be an integer or a string in PHP? [closed]filter_id() 在 PHP 中应该是整数还是字符串? [关闭]
【发布时间】:2020-04-04 14:25:54
【问题描述】:

这是PHP - what is filter_id() used for?的后续问题

如果我尝试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 值(数字和字符串)?

【问题讨论】:

  • FILTER_VALIDATE_EMAIL常量名274常量值
  • @u_mulder 在全局 php 空间中使用这些 CONST 常量有什么意义?
  • 与任何其他常量一样 - 使用命名和可理解的值而不是某些 274

标签: php filter php-7


【解决方案1】:

在底层,CONSTANT 名称指的是整数值。字符串名称只是为了让我们程序员更容易阅读。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 2013-06-22
    相关资源
    最近更新 更多