首页 > 解决方案 > 在php中创建一个机制来查找网站是否相同,即使它有http、https或两者都没有

问题描述

我想在 php 中创建一个系统,它显示网站是否相同,即使协议是否存在:

例子:

www.facebook.com
facebook.com
http://facebook.com
https://facebook.com
http://www.facebook.com
https://www.facebook.com

所有这些都是同一个网站,只是写法不同。主要组件是“facebook.com”,其他是使用的协议。

标签: phphttphttpsprotocols

解决方案


这可能是解决您问题的好方法:

function isMatches(...$urls): bool
{
    if(count($urls) <= 1) {
        return true;
    }

    $pattern = '/^(http)(s)?(:\/\/)?(www\.)?(.*)$/';
    $url = preg_replace($pattern, '$5', $urls[0]);
    for($i = 0; $i < count($urls); $i++) {
        if($url !== preg_replace($pattern, '$5', $urls[$i])) {
            return false;
        }
    }

    return true;
}

并测试:

$result = isMatches(
    'http://facebook.com',
    'http://www.facebook.com',
    'https://facebook.com',
    'https://www.facebook.com'
); // true

$result = isMatches(
    'http://facebook.com2',
    'http://www.facebook.com',
    'https://facebook.com',
    'https://www.facebook.com'
); // false

推荐阅读