我偶然发现了一个解析HTTP_ACCEPT_LANGUAGE的脚本:http://www.thefutureoftheweb.com/blog/use-accept-language-header
此脚本返回包含可接受语言的有序数组:
Array ( it => 1 ar => 0.8 ja => 0.6 cn => 0.4 de => 0.2 )(it=>1 ar=>0.8 ja=>0.6 cn=>0.4 de=>0.2)
现在,我想创建一个包含可用语言的数组,如下所示:
$av_lang =数组(‘en’,'fr','de','it');(无序数组)
然后,我想遍历第一个数组,得到第二个数组中的第一个键。
例如,它从第一个数组中获取'en‘并检查是否存在于第二个数组中,如果不存在,则转到下一个键'ar’并检查它。如果它们都不是,则返回默认的lang,如'en‘。
最后,我想在$av_lang中获得一种可用的语言。
谢谢。
发布于 2011-08-08 09:37:01
尝试如下所示:
$lang = array('it' => 1, 'ar' => 0.8, 'ja' => 0.6, 'cn' => 0.4, 'de' => 0.2);
$preferred = array('en', 'ja');
$intersect = array_values(array_intersect(array_keys($lang), $preferred));
if (isset($intersect[0])) {
echo $intersect[0]; // returns ja
}发布于 2012-02-01 16:41:22
就我个人而言,我是这样使用的:
$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
preg_match_all('/(\W|^)([a-z]{2})([^a-z]|$)/six', $lang, $m, PREG_PATTERN_ORDER);
$user_langs = $m[2];你得到的是一个由两个字母组成的语言数组,然后你可以遍历它们并找到你支持的语言,即
$supported_langs = array('en', 'fr', 'de', 'it');
$user_lang = 'en'; // Default
foreach($user_langs AS $tmp){
if(in_array($tmp, $supported_langs)){
$user_lang = $tmp;
break;
}
}此时,$user_lang将包含标题中的第一种受支持的语言(或默认语言)。
https://stackoverflow.com/questions/6976963
复制相似问题