johnroyer / url-normalizer
基于语法的URL规范化
2.1.1
2024-02-07 04:49 UTC
Requires
- php: >=8.0
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ^9.6.0
- squizlabs/php_codesniffer: ^3.7
This package is auto-updated.
Last update: 2024-09-07 06:14:16 UTC
README
此URL规范化器是从 glenscott/url-normalizer 分支而来,并进行了一些修改
- 升级PHPUnit到v9.x
- 将跟踪参数作为选项移除(例如
utm_source
,fbclid
等)
基于语法的URI规范化
该规范化基于RFC 3986规范https://tools.ietf.org/html/rfc3986
示例用法
require_once 'vendor/autoload.php'; $url = 'eXAMPLE://a/./b/../b/%63/%7bfoo%7d'; $un = new URL\Normalizer( $url ); echo $un->normalize(); // Result: 'example://a/b/c/%7Bfoo%7D'
规范化过程保留语义
例如,以下URL都是等效的。
HTTP://www.Example.com/
和http://www.example.com/
http://www.example.com/a%c2%b1b
和http://www.example.com/a%C2%B1b
http://www.example.com/%7Eusername/
和http://www.example.com/~username/
http://www.example.com
和http://www.example.com/
http://www.example.com:80/bar.html
和http://www.example.com/bar.html
http://www.example.com/../a/b/../c/./d.html
和http://www.example.com/a/c/d.html
http://www.example.com/?array[key]=value
和http://www.example.com/?array%5Bkey%5D=value
执行的规范化
- 将方案和主机转换为小写
- 将转义序列中的字母大写
- 解码非保留字符的百分编码八位字节
- 添加尾部
/
- 移除默认端口
- 移除点段
有关这些规范化的更多信息,请参阅以下维基百科文章
http://en.wikipedia.org/wiki/URL_normalization#Normalizations_that_Preserve_Semantics
有关许可证信息,请参阅LICENSE文件。
选项
在规范化URL时,有两个选项默认禁用
- 移除空分隔符。启用此选项会将
http://www.example.com/?
规范化为http://www.example.com/
目前,此选项仅支持查询字符串分隔符(?
)。 - 排序查询参数。启用此选项将按字母顺序对查询参数进行排序。例如,
http://www.example.com/?c=3&b=2&a=1
变为http://www.example.com/?a=1&b=2&c=3
- 移除跟踪参数。例如,
https://example.com/?fbclid=xxxxx
变为https://example.com/?