gpt4 book ai didi

PHP 将 URL 规范化为相同的形式

转载 作者:可可西里 更新时间:2023-11-01 00:54:19 27 4
gpt4 key购买 nike

我想根据列表检查 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符合 RFC 3986 规范的 URL 规范化包。您可以通过以下简单示例查看规范化的结果:

$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>";
}

结果:

http://example.com/~smith/home.html

http://example.com/~smith/home.html

http://example.com/~smith/home.html

http://example.com/~smith/home.html

https://example.com/~smith/home.html

关于PHP 将 URL 规范化为相同的形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54292837/

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