用PHP检查浏览器的语言?

Léo*_* 준영 9 php browser

如何通过PHP检查用户浏览器的语言?

我需要为美国和英国的人们展示不同的页面.

我尝试了以下代码失败

<?php
if(ereg("us", $_SERVER["HTTP_ACCEPT_LANGUAGE"]))
   include('http://page.com/us.txt');
else
   include('http://page.com/uk.txt');
?>
Run Code Online (Sandbox Code Playgroud)

我为美国和英国的人们运行了一个特定的代码.

bob*_*nce 8

可能只是一个区分大小写的问题; eregi('en-us')或preg_match('/ en-us/i')本应该把它拿起来.

但是,只是在标题中查找"en-us"可能会错误,特别是在列出美国和英国语言时."Accept-Language"实际上是一个非常复杂的标题,你真的需要一个合适的解析器.

如果您有PECL,那么整个工作已经为您完成:http://www.php.net/manual/en/function.http-negotiate-language.php

我不知道为什么其他答案是针对User-Agent标头的; 这完全是假的.用户代理不被要求在任何特定的地方保留语言价值,对于某些浏览器(例如Opera,以及一些我从未听说过的称为"Internet Explorer"的小型浏览器),它根本不会.凡确实含有一种语言,那将是该语言的编译器安装在,而不是用户的是什么,你应该看着首选语言.(此设置将默认为构建语言,但可由用户从首选项UI自定义.)