2009-07-13 103 views
2

我需要一個包含URL的變量,並檢查域是否等於特定域,如果是,則回顯一個變量,如果不是,則回顯另一個變量。php檢查域是否等於值,然後執行操作

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

我不知道如何編寫第二行,檢查域以查看$ domain是否包含if語句中的url。

回答

14

這是通過使用parse_url完成:

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

你可能需要更強大的域檢查,如喬納森·桑普森的回答指出,其他的答案。 – 2009-07-13 23:11:48

+6

自制正則表達式如何比內置的PHP更健壯? – 2009-07-14 03:46:38

7

略高級的域名查找功能。

$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; 
} 
1

你試過parse_url()

請注意,您可能還需要explode()產生的域名爲'.',具體取決於您所指的'域名'。

1

您可以使用parse_url function將URL劃分爲單獨的部分(協議/主機/路徑/查詢字符串/ etc)。如果您還希望允許www.google.com成爲google.com的同義詞,則需要添加額外的子字符串檢查(使用substr),以確保主機的後半部分與您所在的域相匹配尋找。

2

除了可以使用正則表達式,像這樣一個看起來對google.com的域名

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

} 
相關問題