2010-01-26 75 views
1

我写了一个小脚本提供了一个URL(例如:code.google.com/ajax/123/1235/214) 会告诉你,实际的域名是:code.google.com在php比较域

当此相比code.google.com它当然返回true,我希望它返回true时,它是相对于(任何).google.com 所以,我希望它返回true,只要实际域不管子域是一样的,该怎么做?

(这不是一门功课的问题,它是一个项目,我的工作,所以请提供尽可能多的帮助可能)

(如果你需要更多信息来理解这个问题,请写一个评论和我会立即提供更多信息)

回答

2

一个解决办法可能是使用类似parse_url提取您的网址host部分(这可能是该信息的获取)最简单的方法。

然后,您可以explode主机,使用“.”作为分隔符,以获取包含URL 的分量的数组(例如,你必须array('code', 'google', 'com')

最后,只比较每个网址的数组的最后两个元素。

这样,您会将'google'和'com'与来自第二个网址的信息进行比较。


我想只用一对夫妇(简单)的字符串比较在某些情况下可能会工作;但不要忘了像“www.mywebsite.com”和“subdomain.website.com案件 - 只是举个例子表明,域名比较到底是不是足够的^^

+0

是有没有办法比较google.com来使用google.co.uk例如,仍然返回true? – user220755 2010-01-26 12:41:24

1

它可以使用一些错误检查,但你可以这样做这样的:

<?php 

function url_belongs_to_domain($url, $domain){ 
    $url_domain = parse_url($url, PHP_URL_HOST); 

    return preg_match('/' . preg_quote($domain, '/') . '$/i', $url_domain)==1; 
} 

var_dump(url_belongs_to_domain('http://code.google.com/ajax/123/1235/214', 'google.com')); 
var_dump(url_belongs_to_domain('http://code.google.com/ajax/123/1235/214', 'code.google.com')); 
var_dump(url_belongs_to_domain('http://code.google.com/ajax/123/1235/214', 'www.google.com')); 
var_dump(url_belongs_to_domain('http://www.google.com/ajax/123/1235/214', 'google.com')); 
var_dump(url_belongs_to_domain('http://www.google.com/ajax/123/1235/214', 'code.google.com')); 
var_dump(url_belongs_to_domain('http://www.google.com/ajax/123/1235/214', 'www.google.com')); 

?> 

bool(true) 
bool(true) 
bool(false) 
bool(true) 
bool(false) 
bool(true) 

要知道,顶级域名的精确检测需要核对清单,因为它不遵循任何规则:在www.google.comgoogle.com,在www.google.co.ukgoogle.co.uk