我想对照列表检查URL以做出处理选择(这将查看数据流,而不是作为应用程序中的路由器),但是HTTP使得以许多不同的方式表示相同的URL非常容易,例如(改编自RFC 2616):
http://example.com/~smith/home.html
http://example.com:80/~smith/home.html
http://EXAMPLE.com/%7Esmith/home.html
http://EXAMPLE.COM/%7esmith/home.html
全部代表相同的目标资源.
我希望该工具将URL转换为规范形式…
>主机名大小写要一致
>支持不是方案,用户名,密码,端口,路径,查询和片段的完整元组的URL
>明智地处理隐式端口和显式端口号
>产生的URL ascii编码为%….序列的扩展
>明智地处理路径中的“ ./”和“ ../”
>(可选)对查询中的变量进行一致排序
(似乎parse_url()都不执行这些操作.)
解决方法:
您可以使用glenscott/url-normalizer软件包对URL进行规范化,以符合RFC 3986规范.您可以通过以下简单示例,通过帮助查看规范化的结果:
$urls = [
'http://example.com/~smith/home.html',
'http://example.com:80/~smith/home.html',
'http://EXAMPLE.com/%7Esmith/home.html',
'http://EXAMPLE.COM/%7esmith/home.html',
'https://example.com:443/~smith/home.html'
];
foreach ($urls as $url) {
$normalizer = new URL\normalizer($url);
echo $normalizer->normalize(), "</br>";
}
结果:
07001
07001
07001
07001
07005
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。