Php проверить, равна ли домену значению, затем выполнить действие

Мне нужно взять переменную, содержащую URL-адрес, и проверить, соответствует ли домен определенному домену, если он это делает, эхо-одну переменную, если нет, повторить другое.

$domain = "http://www.google.com/docs";
if ($domain == google.com)
{ echo "yes"; }
else
{ echo "no"; }

Я не уверен, как написать вторую строку, где он проверяет домен, чтобы узнать, содержит ли $domain url в выражении if.

Ответы

Ответ 1

Это делается с помощью parse_url:

$host = parse_url($domain, PHP_URL_HOST);
if($host == 'www.google.com') {
    // do something
}

Ответ 2

Немного более продвинутая функция поиска домена.

$address = "http://www.google.com/apis/jquery";

if (get_domain($address) == "google.com") {
  print "Yes.";
}

function get_domain($url)
{
    $pieces = parse_url($url);
    $domain = isset($pieces['host']) ? $pieces['host'] : '';
    if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
        return $regs['domain'];
    }
    return false;
}

Ответ 3

В дополнение к другим ответам вы можете использовать регулярное выражение, подобное этому, которое ищет google.com в доменном имени

$domain = "http://www.google.com/docs";
if (preg_match('{^http://[\w\.]*google.com/}i', $domain))
{

}

Ответ 4

Вы пробовали parse_url()?

Обратите внимание, что вы также можете захотеть explode() результирующий домен на '.', в зависимости от того, что вы имеете в виду под "доменом".

Ответ 5

Вы можете использовать функцию parse_url, чтобы разделить URL на отдельные части (протокол/хост/путь/строка запроса /etc ). Если вы также хотите, чтобы www.google.com являлся синонимом для google.com, вам нужно добавить дополнительную проверку подстроки (с помощью substr), которая гарантирует, что последняя часть узла соответствует домену, который вы ищет.