Мне нужно взять переменную, содержащую URL-адрес, и проверить, соответствует ли домен определенному домену, если это так, echo одна переменная, если нет, echo another.
$domain = "http://www.google.com/docs"; if ($domain == google.com) { echo "yes"; } else { echo "no"; }
Я не уверен, как написать вторую строку, где он проверяет домен, чтобы узнать, содержит ли $ domain url в выражении if.
Это делается с помощью parse_url
:
$host = parse_url($domain, PHP_URL_HOST); if($host == 'www.google.com') { // do something }
Немного более продвинутая функция поиска домена.
$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}\.[az\.]{2,6})$/i', $domain, $regs)) { return $regs['domain']; } return false; }
В дополнение к другим ответам вы можете использовать регулярное выражение, подобное этому, которое ищет google.com в доменном имени
$domain = "http://www.google.com/docs"; if (preg_match('{^http://[\w\.]*google.com/}i', $domain)) { }
Вы пробовали parse_url ()
?
Обратите внимание, что вы также можете explode()
результирующий домен в '.'
, в зависимости от того, что вы подразумеваете под «доменом».
Вы можете использовать функцию parse_url для разделения URL-адреса на отдельные части (протокол / хост / путь / строка запроса / etc). Если вы также хотите, чтобы http://www.google.com являлся синонимом для google.com, вам нужно добавить дополнительную проверку подстроки (с помощью substr), которая гарантирует, что последняя часть узла соответствует домену, который вы находясь в поиске.