如何在PHP中应用URL规范化规则?

Yah*_*hel 10 php url normalization

在PHP中是否存在用于URL规范化的预先存在的函数或类?

具体来说,遵循本维基百科关于URL规范化的文章中规定的语义保留规范化规则(或者我应该遵循的任何'标准').

  • 将方案和主机转换为小写
  • 在转义序列中大写字母
  • 添加尾随/(到目录,而不是文件)
  • 删除默认端口
  • 删除点段

现在,我想我只会使用parse_url(),并单独应用规则,但我宁愿避免重新发明轮子.

Bha*_*tta 6

Pear Net_URL2库看起来至少可以完成您想要的部分内容.它将删除点段,修复大小写并摆脱默认端口:

include("Net/URL2.php");
$url = new Net_URL2('HTTP://example.com:80/a/../b/c');
print $url->getNormalizedURL();
Run Code Online (Sandbox Code Playgroud)

发出:

http://example.com/b/c
Run Code Online (Sandbox Code Playgroud)

我怀疑是否有一个向目录添加尾部斜杠的通用机制,因为您需要一种方法将URL映射到目录,这是通用方式难以做到的.但它很接近.

参考文献: