如何检查两个url是否都是相同的php

时间:2016-07-03 19:27:37

标签: php arrays regex string preg-match

如何检查两个uri是否相同,但是具有以下条件

  1. 方案名称的比较必须是不区分大小的

  2. 主机名的比较必须具有不敏感性

  3. 路径,散列和查询字符串的比较必须区分大小写 路径可能包含遍历令牌(相同的目录)和..(一个目录)必须考虑

  4. 字符相当于他们的%HEX HEX编码。 (除了典型的保留

  5. 网址中的字符,/? :@& = + $#)

  6. 查询字符串参数必须以任意顺序等效,但同名的查询字符串参数必须在两个URI中以相同的顺序列出才能等效。可能有多个(不仅仅是2个)同名的args需要考虑。

  7. 可能存在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

    我如何有效地匹配条件。帮助请

0 个答案:

没有答案