如何检查两个uri是否相同,但是具有以下条件
方案名称的比较必须是不区分大小的
主机名的比较必须具有不敏感性
路径,散列和查询字符串的比较必须区分大小写 路径可能包含遍历令牌(相同的目录)和..(一个目录)必须考虑
字符相当于他们的%HEX HEX编码。 (除了典型的保留
网址中的字符,/? :@& = + $#)
查询字符串参数必须以任意顺序等效,但同名的查询字符串参数必须在两个URI中以相同的顺序列出才能等效。可能有多个(不仅仅是2个)同名的args需要考虑。
可能存在InURI基本身份验证:例如 http://uname:passwd@host.com/foo/bar.html,auth必须是区分大小写的
这是我的示例输入和输出
uri1: http://example.com:80/~smith/home.html
uri2: http://example.com/%7Esmith/home.html
true
uri1: http://example.com/drill/down/foo.html
uri2: http://example.com/drill/further/../down/./foo.html
true
uri1: http://example.com/foo.html?a=1&b=2
uri2: http://example.com/foo.html?b=2&a=1
true
uri1: http://example.com/foo.html?a=1&b=2&a=3
uri2: http://example.com/foo.html?a=3&a=1&b=2
false
这是我尝试的是
<?php
function checkuri($firsturl, $secondurl)
{
$array1=parse_url($firsturl);
$array2=parse_url($secondurl);
if($array1['scheme']==$array2['scheme'])
{
echo '1. Scheme Matched !<br>';
}
else
{
echo '1. Scheme not Matched !'; die;
}
if($array1['host']==$array2['host'])
{
echo '2. Host Matched !<br>';
}
else
{
echo '2. Host not Matched !'; die;
}
print_r($array1);
print_r($array2);
}
checkuri('http://www.example.com?a=1&b=1','http://www.example.com');
这是评估link
我如何有效地匹配条件。帮助请