2012-10-12 53 views
1

我想确定访问者的区域。我的网站有4种语言版本,我想要检测访问者是否从英语国家或俄语或阿拉伯语或西班牙语国家访问我的网站。什么是最好的方式来做到这一点?php根据访问者的语言重定向的最佳方式

+0

使用$ _SERVER ['REMOTE_ADDR'];并在IP列表的基础上向您的访问者做以下 – swapnesh

+0

我讨厌那样做的网站。给用户选择他想要的语言。 –

+0

您应该使用'HTTP_ACCEPT_LANGUAGE'并提供手动设置语言的选择。当人们通过代理/ VPN /公司网关访问时,GEOIP并不总是工作,这些网关并不反映他们实际说的语言,更不用说告诉你他们位于何处! – nickhar

回答

1

这是我们在脚本中使用做类似的检测:

function get_preferred_lang() { 
    if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) { 
     preg_match_all('#([a-z-]+) *(?:; *q=([0-9.]+))?#', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]), $matches); 
     $accept = array_combine($matches[1], $matches[2]); 
     foreach ($accept as $key => $val) 
     $accept[$key] = $val == '' ? 1.0 : (float) $val; 
     arsort($accept); 
     return substr(array_shift(array_keys($accept)),0,2); 
     } else { 
     return 'unknown'; 
    } 
} 
-1

您可以使用$_SERVER['REMOTE_ADDR'];获取用户的IP地址,这个使用这个链接的基础上,根据您的要求GEOIP进一步进行

相关问题