我需要一个包含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