gpt4 book ai didi

php - FILTER_VALIDATE_URL 的 FILTER_FLAG_SCHEME_REQUIRED 和 FILTER_FLAG_HOST_REQUIRED 标志有什么用?

转载 作者:行者123 更新时间:2023-12-03 15:46:20 25 4
gpt4 key购买 nike

我们可以使用 filter_vars() FILTER_VALIDATE_URL flags :

FILTER_FLAG_SCHEME_REQUIRED
FILTER_FLAG_HOST_REQUIRED
FILTER_FLAG_PATH_REQUIRED
FILTER_FLAG_QUERY_REQUIRED
FILTER_VALIDATE_URL根据 RFC 2396 将值验证为 URL并在内部使用 parse_url() 并需要方案(协议(protocol))和主机部分。

如果我还想检查路径和查询部分,我可以像这样使用 filter_vars:
filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED | FILTER_FLAG_QUERY_REQUIRED);

但是 FILTER_FLAG_SCHEME_REQUIRED 有什么用?和 FILTER_FLAG_HOST_REQUIRED标志?似乎无论我们是否指定这些标志,无论如何都会检查方案和主机部分。

例如,像这样过滤有效的相对 URL:
filter_var('test1/2.html', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED);

返回假。

最佳答案

旗帜FILTER_FLAG_SCHEME_REQUIREDFILTER_FLAG_HOST_REQUIRED自 5.2.1 以来没有任何效果,因为它们始终处于打开状态,无法禁用它们,并且它们实际上并未在 PHP 源代码中的任何地方使用。

https://bugs.php.net/bug.php?id=75442

文档刚刚对常量的使用进行了澄清,但为了保持向后兼容性,它们不太可能在下一个主要的 PHP 版本 [例如:PHP8] 之前被删除。

有一组不需要主机名部分的硬编码方案,[ mailto: , news: , 和 file: ] 但是如果你想实现对没有主机或方案部分的其他 URL 的验证,你需要编写一些调用 parse_url() 的东西。并在其返回时运行。

您可以在此处查看当前的 URL 验证源:https://github.com/php/php-src/blob/master/ext/filter/logical_filters.c#L517-L574

关于php - FILTER_VALIDATE_URL 的 FILTER_FLAG_SCHEME_REQUIRED 和 FILTER_FLAG_HOST_REQUIRED 标志有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45240033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com