我有两个网址,并正在寻找最好的方式来确定他们是否相同。
示例:
$url1 = 'http://example.com/page.php?tab=items&msg=3&sort=title';
$url2 = 'http://example.com/page.php?tab=items&sort=title&msg=3';
在这两个URL中,只有sort
和msg
参数被交换,所以我认为它们是相等的。
我有一个URL列表,需要查找重复的URL,所以代码应该很快,因为它是在循环中运行的。domain/page.php将始终保持不变,它只是通过参数查找URL。)
3条答案
按热度按时间xjreopfe1#
也许像这样?
a64a0gku2#
找出一个URI是否相同并不像听起来那么容易,特别是在这里考虑查询参数时。
一种常见的方法是使用normalizes the URL函数,然后比较规范化的URI:
在这样一个规范化函数中,你可以输入你的需求。首先,URL应该根据规范进行规范化:
然后,您可以执行其他规范化步骤,例如,对查询的子部分进行排序:
可以考虑其他步骤,如删除默认参数或不允许的参数,或重复的参数等。
最后返回规范化URL的字符串
对参数使用数组/散列Map也不错,我只是想展示另一种方法。完整示例:
u0njafvf3#
为了确保两个URL相同,我们需要比较至少4个元素:
1.方案(例如
http
、https
、ftp
)1.主机,即URL的域名
1.路径,即请求的“文件”
1.请求的查询参数。
一些注意事项:
http://example.org
与HTTP://EXAMPLE.ORG
相同。example.org
与example.org/
相同#anchor
),因为它们只由浏览器解析。解决方案:
下面是一个检查所有这些细节的完整函数:
测试用例: