2009-07-13 35 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)) 
{ 

} 
相关问题