检查两个URL字符串是否是相同的PHP

时间:2013-09-20 11:14:08

标签: php regex yii

如何检查两个URL字符串是否相同,例如

http://example.com

http://example.com/

https://example.com/

http://example.com/#

以上所有网址都指向同一页

假设我的数据库中有一个urls目录,我正在向已存在的数据库添加一个url。如何使用PHP验证上述场景的唯一性。

1 个答案:

答案 0 :(得分:3)

使用parse_url将网址细分为多个部分,并比较那些必须与“相同”定义匹配的网址。

例如:

function areUrlsTheSame($url1, $url2)
{
    $mustMatch = array_flip(['host', 'port', 'path']);
    $defaults = ['path' => '/']; // if not present, assume these (consistency)
    $url1 = array_intersect_key(parse_url($url1), $mustMatch);
    $url2 = array_intersect_key(parse_url($url2), $mustMatch);

    return $url1 === $url2;
}

<强> See it in action