0

次の形式の URL があります:
www.discover.com
http://discover.com
http://www.discover.com
http://www.abcd.discover.com
discover.com

そして、次の形式のいずれかの別の URL があります:
www.discover.com/something/smoething
http://discover.com/something/smoething
http://www.discover.com/something/smoething
http:// www.abcd.discover.com/something/smoething
discover.com/something/smoething

この 2 つの URL を比較して、2 番目の URL にドメイン名「discover.com」が存在するかどうかを確認します。

以下のコードを使用しています:

$domain1 = str_ireplace('www.', '', parse_url($urlItem1, PHP_URL_HOST));
    $domain2= str_ireplace('www.', '', parse_url($urlItem2, PHP_URL_HOST));

    if(strstr($domain2, $domain1))
    {
        return $domain2;
    }

解決 :

function url_comparison($url1, $url2) {
$domain1 = parse_url($url1,PHP_URL_HOST);
$domain2 = parse_url($url2,PHP_URL_HOST);

$domain1 = isset($domain1) ? str_ireplace('www.', '',$domain1) : str_ireplace('www.', '',$url1); 
$domain2 = isset($domain2) ? str_ireplace('www.', '',$domain2) : str_ireplace('www.', '',$url2);

if(strstr($domain2, $domain1))
{
    return true;
}
else
{
    return false;
}
}

$url1 = "discover.com";
$url2 = "https://www.abcd.discover.com/credit-cards/resources/balance-transfer.shtml";

if(url_comparison($url1, $url2))
{
echo "Same Domain";
}
else
{
echo "Diffrent Domain";
}

ありがとう。

4

1 に答える 1

1

ドキュメントを利用し、URL を解析する

次に、strpos を使用して、ホスト名を確認する必要があります。

$url = parse_url('www.discover.com/something/smoething');

if (strpos($url['host'], 'discover.com') !== false) {
  // do you thing
}

0 も有効な値なので、!== または === が必要です

2 つのドメインが等しいかどうかを確認するには、いくつかのルールを設定する必要があります。なぜなら、www.example.com は example.com と同じで、https は http と同じだからです。

function url_comparison($url_1, $url_2, $www = false, $scheme = false) {
    $url_part_1 = parse_url($url_1);
    $url_part_2 = parse_url($url_2);

    if ($scheme && $url_part_1['scheme'] !== $url_part_2['scheme']) {
        return false;
    }

    if ($www && $url_part_1['host'] === $url_part_2['host']) {
        return false;
    } elseif(!$www && (strpos($url_part_1['host'], $url_part_2['host']) !== false || strpos($url_part_2['host'], $url_part_1['host']) !== false)) {
        return false;
    }

    return true;
}

上記の関数を使用すると、正しい方向が表示されるはずですが、テストされていないため、おそらく微調整する必要があります。最初の 2 つの値は URL である必要があります。$www「www.」の場合はブール値です。チェックする必要が$scheme = trueあり、https または http も同じにする必要がある場合

于 2013-06-07T08:02:40.653 に答える