【问题标题】:Why FILTER_VALIDATE_DOMAIN allow character like dot, emoji, empty value, special char?为什么 FILTER_VALIDATE_DOMAIN 允许点、表情符号、空值、特殊字符等字符?
【发布时间】:2019-06-24 13:30:21
【问题描述】:

我已经使用 FILTER_VALIDATE_DOMAIN 来验证域,但它允许所有字符,如空格、特殊字符、空值似乎不起作用

这里有一些例子都没有返回布尔值。

var_dump(filter_var("0", FILTER_VALIDATE_DOMAIN));
var_dump(filter_var('test', FILTER_VALIDATE_DOMAIN));
var_dump(filter_var('test test', FILTER_VALIDATE_DOMAIN));
var_dump(filter_var('@', FILTER_VALIDATE_DOMAIN));
var_dump(filter_var('????', FILTER_VALIDATE_DOMAIN));

我希望它应该返回 false。

【问题讨论】:

  • 您确实阅读过文档,对吧?
  • 也许你忘了添加FILTER_FLAG_HOSTNAME....检查它是如何工作的ideone.com/WzbmyV
  • @Hackerman 我看到它看起来像部分工作。请参阅也应返回 false 的前 2 行。我们期望域名中的 .(dot)。

标签: php filter-var


【解决方案1】:

插入条件 FILTER_FLAG_HOSTNAME

var_dump(filter_var("0", FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME));
var_dump(filter_var('test', FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME));
var_dump(filter_var('test test', FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME));
var_dump(filter_var('@', FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME));
var_dump(filter_var('?', FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME));

【讨论】:

    猜你喜欢
    • 2019-11-29
    • 2019-04-22
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多