接受语言输出变量HTTP_ACCEPT输出的是一个烂摊子,我不能使用它,需要转变成一个这样的数组:变换的阵列
Array
(
[en-ca] => 1
[pt-pt] => 0.4
[de] => 0.2
);
我希望你们能帮助我。
编辑:
这里是将检测客户端的首选语言代码,这是一个快速的方法来猜测用户的语言:
我做这个想法的所有西班牙语和葡萄牙语的访问者,中间有一些substr,因为pt-BR或pt-PT将使用相同的语言文件,例如es-ES和es-CO也是如此。
<?php
// detectar idioma
$linguagens = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$parcelas = explode(',', $linguagens);
$linguas_aceites = array();
foreach ($parcelas as $lingua) {
$contagem = preg_match('/([-a-zA-Z]+)\s*;\s*q=([0-9\.]+)/', $lingua, $matches);
if ($contagem === 0)
$linguas_aceites[substr($lingua, 0, 2)] = 1;
else
$linguas_aceites[substr($matches[1], 0, 2)] = $matches[2];
}
foreach ($linguas_aceites as $key => $val) {
if(substr($key, 0, 2) == "pt"){
echo "Portugues e preferido aqui";}
}
?>
这不是没有AIF的帮助才有可能(非常感谢你的原代码!):
<?php
$al = 'en-US,en;q=0.8,pt-PT;q=0.6';
$values = explode(',', $al);
$accept_language = array();
foreach ($values AS $lang) {
$cnt = preg_match('/([-a-zA-Z]+)\s*;\s*q=([0-9\.]+)/', $lang, $matches);
if ($cnt === 0)
$accept_language[$lang] = 1;
else
$accept_language[$matches[1]] = $matches[2];
}
print_r($accept_language);
?>
什么乱七八糟你得到的输出? – 2011-05-29 15:23:21
en-US,en; q = 0.8,pt-PT; q = 0.6 012,我相信数字结果是根据我浏览的PT或EN页面的百分比来计算的。我需要这个作为一个数组,所以我可以定义一些条件。 – Souza 2011-05-29 15:31:34
@ Coding-Freak,对我有什么提示?非常感谢你! – Souza 2011-05-29 15:54:46