php - 解析 HTTP_ACCEPT_LANGUAGE

标签 php arrays

我遇到了一个解析 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/

相关文章:

javascript - 如何从 String.prototype.replace() 方法中的回调返回正确的值?

php - Ajax 调用对于特定查询的特定 if else 语句无法正常工作

javascript - 比较 html 标签内变量的正则表达式

c - 二进制文件中的结构体数组

php - Mysql搜索以逗号分隔的字符串

javascript - 交换数组中的两个值

arrays - 如何确定元素是否存在于 Perl 6 数组中

php - 在 json 中连接多个表

php - 使用... openid 获取gmail 地址?授权?

PHP 准备好的语句。 $stmt, fetch_array()