php - 通过 PHP 检查浏览器的语言?

标签 php browser

如何通过 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/

相关文章:

php - Mysqli 选择多个查询

php - 我想在登录时显示欢迎用户名的消息

ruby-on-rails - 停止在 Rails 和浏览器中缓存图像?

javascript - 错误 : valLists is undefined in pagination of table rows using AngularJS, AJAX

php - 如何使用 phpstorm 评估特定命名空间的 xpath?

javascript - JQuery $.post() 与数组和/或接收数组不起作用

javascript - js Chrome 扩展的 js 事件(在每个选项卡上工作已加载页面)

c# - 检查浏览器是否接受 cookie

browser - 键盘上的播放/暂停按钮如何工作?

javascript - 处理IE浏览器的关闭按钮