php 规范化url,PHP将URL标准化为相同形式

我想对照列表检查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(), "";

}

结果:

07001

07001

07001

07001

07005

标签:url,php

来源: https://codeday.me/bug/20191024/1923495.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值