2014-03-30 68 views
-2

我的目标是写一个PHP函数:php:如何检测网站的国家?

getCountry($url) { 
... 
return $countryCode; 
} 

是否有“足够好”的方式来检测网站的国家吗?

我说的是国家,而不是服务器的geoip。

如果我的策略够好?

如果TLD是本地的(例如:.FR) - >法国

其他分析首部的Accept-Language:EN-US或解析HTML页面。

也许有一个远程API的呢?像whois?

+0

如果域名没有告诉你,和托管的geoip的不充分,那么“不” ......提高对你的业务需求,这是[PHP的 –

+0

可能重复的问题 - 检测国家](http://stackoverflow.com/questions/14414705/php-detect-country) – MarkP

+1

什么是“网站的国家”,如果不是其服务器的位置?这在这里是非常不合理的......或者你正在谈论网站的语言区域设置(en-US是一个区域设置,而不是位置)? –

回答

1

恐怕就在这里有些困惑......你提出的算法是非常不准确的:

  • 的TLD不会告诉你任何东西关于网站的国家:大多数时间,你不需要住在顶级域名(TLD)的国家就可以获得一个依赖它的域名。
  • HTTP头Accept-Language显然是关于语言而不是位置。您只会获得有关网站内容编写语言的信息。en-US在您的示例中定义了美国英语。

网站它托管在国内的,即它的Web服务器的位置。这可以通过检索:

但是,在某些情况下,这可能会变得不准确(例如,隐藏在CloudFlare后面的网站)。

如果这是不是你要找什么,那么我建议你修改你的问题,给我们介绍一下你想达到什么样的详细信息...

0

这听起来像你问,是什么语言用户在他们的网络浏览器中使用?例如,如果法国的一位说法语的人会用法语阅读他们的bowser,而来自美国的法国访问者则会在法国,但用英语阅读他们的浏览器。

$userBrowserLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); 
if($userBrowserLang == 'fr') { 

      include("index_french.php"); //french version of index page. 

}