如何通过 PHP 检查用户浏览器的语言?
我需要为美国和英国的用户显示不同的页面。
我试了下面的代码不成功
<?php
if(ereg("us", $_SERVER["HTTP_ACCEPT_LANGUAGE"]))
include('http://page.com/us.txt');
else
include('http://page.com/uk.txt');
?>
我为美国人和英国人运行特定代码。
最佳答案
可能只是一个区分大小写的问题; eregi('en-us') 或 preg_match('/en-us/i') 应该已经把它捡起来了。
但是,有时仅在标题中查找“en-us”可能会出错,特别是当同时列出美国和英国语言时。 “Accept-Language”实际上是一个相当复杂的 header ,您确实需要一个合适的解析器。
如果您有 PECL,那么整个工作已经为您完成:http://www.php.net/manual/en/function.http-negotiate-language.php
我不知道为什么其他答案都针对 User-Agent header ;这完全是假的。 User-Agent 并没有被强制要求在任何特定位置保留语言值,对于某些浏览器(例如 Opera 和一些我从未听说过的称为“Internet Explorer”的次要浏览器),它根本不会。如果它确实包含一种语言,那将是安装浏览器构建时使用的语言,而不是您应该查看的用户首选语言。 (此设置将默认为构建语言,但用户可以从首选项 UI 进行自定义。)
关于php - 通过 PHP 检查浏览器的语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/620276/