Ste*_*ven 14 php regex localization http internationalization
<?php
$language = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
echo $language;
?>
Run Code Online (Sandbox Code Playgroud)
当我使用Firefox测试的代码块,我得到的en-us,en;q=0.7,ja;q=0.3,
当我使用IE来测试代码块时,我明白了zh-cn.
是$_SERVER['HTTP_ACCEPT_LANGUAGE']一个字符串的值?如何确定首选语言是中文还是日文?如何编写正则表达式来获取语言的值$_SERVER['HTTP_ACCEPT_LANGUAGE']?
Pas*_*TIN 28
是的,值$_SERVER['HTTP_ACCEPT_LANGUAGE']是一个字符串 - 请参阅$_SERVER.
它的内容由浏览器发送 - 这解释了为什么根据您使用的浏览器获得不同的结果:最有可能的是,您的Firefox配置为请求英语(高优先级)或日语(低优先级)页面,而您的IE配置为请求中文页面.
这是因为HTTP标头可以包含:
这个想法是服务器应该使用适合用户所要求的"最佳"语言进行响应.
关于解析该标题,此博客文章可能是一个有趣的读物:解析接受语言以检测用户的语言
有一部分代码被提议用来解析HTTP头 - 它会生成一个看起来像这样的数组(引用):
Array
(
[en-ca] => 1
[en] => 0.8
[en-us] => 0.6
[de-de] => 0.4
[de] => 0.2
)
Run Code Online (Sandbox Code Playgroud)
这是一个语言数组,按优先级排序,按降序排列 - 这可能是你想要的.
从v5.3开始,PHP具有以下功能:
$locale = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
Run Code Online (Sandbox Code Playgroud)
请参阅:http://php.net/manual/en/locale.acceptfromhttp.php