首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析HTTP_ACCEPT_LANGUAGE

解析HTTP_ACCEPT_LANGUAGE
EN

Stack Overflow用户
提问于 2011-08-08 09:16:21
回答 2查看 5.3K关注 0票数 3

我偶然发现了一个解析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中获得一种可用的语言。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-08 09:37:01

尝试如下所示:

代码语言:javascript
复制
$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
}
票数 6
EN

Stack Overflow用户

发布于 2012-02-01 16:41:22

就我个人而言,我是这样使用的:

代码语言:javascript
复制
$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
preg_match_all('/(\W|^)([a-z]{2})([^a-z]|$)/six', $lang, $m, PREG_PATTERN_ORDER);
$user_langs = $m[2];

你得到的是一个由两个字母组成的语言数组,然后你可以遍历它们并找到你支持的语言,即

代码语言:javascript
复制
$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将包含标题中的第一种受支持的语言(或默认语言)。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6976963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档