我需要一個包含URL的變量,並檢查域是否等於特定域,如果是,則回顯一個變量,如果不是,則回顯另一個變量。php檢查域是否等於值,然後執行操作
$domain = "http://www.google.com/docs";
if ($domain == google.com)
{ echo "yes"; }
else
{ echo "no"; }
我不知道如何編寫第二行,檢查域以查看$ domain是否包含if語句中的url。
我需要一個包含URL的變量,並檢查域是否等於特定域,如果是,則回顯一個變量,如果不是,則回顯另一個變量。php檢查域是否等於值,然後執行操作
$domain = "http://www.google.com/docs";
if ($domain == google.com)
{ echo "yes"; }
else
{ echo "no"; }
我不知道如何編寫第二行,檢查域以查看$ domain是否包含if語句中的url。
這是通過使用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}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
return $regs['domain'];
}
return false;
}
你試過parse_url()
?
請注意,您可能還需要explode()
產生的域名爲'.'
,具體取決於您所指的'域名'。
您可以使用parse_url function將URL劃分爲單獨的部分(協議/主機/路徑/查詢字符串/ etc)。如果您還希望允許www.google.com成爲google.com的同義詞,則需要添加額外的子字符串檢查(使用substr),以確保主機的後半部分與您所在的域相匹配尋找。
除了可以使用正則表達式,像這樣一個看起來對google.com的域名
$domain = "http://www.google.com/docs";
if (preg_match('{^http://[\w\.]*google.com/}i', $domain))
{
}
你可能需要更強大的域檢查,如喬納森·桑普森的回答指出,其他的答案。 – 2009-07-13 23:11:48
自制正則表達式如何比內置的PHP更健壯? – 2009-07-14 03:46:38