一尘不染

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

php

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

具体来说,请遵循Wikipedia文章中有关URL规范化的语义保留规范化规则(或我应该遵循的任何“标准”)。

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

现在,我认为我将只使用parse_url(),并分别应用规则,但我希望避免重新发明轮子。


阅读 318

收藏
2020-05-29

共1个答案

一尘不染

Pear Net_URL2库看起来至少可以满足您的需求。它将删除点段,修复大小写并摆脱默认端口:

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

发出:

http://example.com/b/c

我怀疑是否存在一种通用的机制来在目录中添加尾部斜杠,因为您需要一种将url映射到目录的方法,而这是一种通用的方法。但这很接近。

参考文献:

2020-05-29