我遇到了一个解析 HTTP_ACCEPT_LANGUAGE: http://www.thefutureoftheweb.com/blog/use-accept-language-header 的脚本
此脚本返回包含可接受语言的 ORDERED 数组:
数组 ( [它] => 1 [ar] => 0.8 [ja] => 0.6 [cn] => 0.4 [de] => 0.2 )
现在,我想创建一个包含可用语言的数组:
$av_lang = array('en','fr','de','it'); (无序数组)
然后我想遍历第一个数组并获取第二个数组中的第一个键。
例如,它从第一个数组中获取 'en' 并检查是否存在于第二个数组中,如果不存在,则转到下一个键 'ar' 并检查它。如果它们都不是,则返回一个默认语言,如“en”。
最后我想在 $av_lang 中获取可用语言之一。
谢谢。
最佳答案
我个人使用这样的东西:
$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
preg_match_all('/(\W|^)([a-z]{2})([^a-z]|$)/six', $lang, $m, PREG_PATTERN_ORDER);
$user_langs = $m[2];
你得到的是一个 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
将包含标题中第一个支持的语言(或默认)
关于php - 解析 HTTP_ACCEPT_LANGUAGE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6976963/