脚本宝典收集整理的这篇文章主要介绍了php – 在数组中转换Accept-language输出,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
Array ( [en-ca] => 1 [pt-pt] => 0.4 [de] => 0.2 );
我希望你们能帮助我.
编辑:
这是一个可以检测客户端首选语言的代码,这是一种猜测用户语言的快速方法:
我已经对所有西班牙和葡萄牙访问者进行了思考,在midle中有一些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,2)] = 1; else $linguas_aceites[substr($matches[1],2)] = $matches[2]; } foreach ($linguas_aceites as $key => $val) { if(substr($key,2) == "pt"){ echo "Portugues e preferido aqui";} } ?>
<?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); ?>
尝试解释一种算法:(仅针对您的样本进行测试)
// Get the accept-language header $al = 'en-US,pt-PT;q=0.6'
请注意,每个lang都用逗号分隔,对于某种语言,您有一个首选顺序(浮动内容).
首先,获取逗号内的值:
$values = explode(',$al);
然后对于每个值,如果有;;检索左手键的值并将其存储在数组中; otherwize,将lang存储为键,并将1作为值.
我使用preg_match返回匹配数的事实(如果没有则返回0,在我们的例子中是第一个).
foreach ($values AS $lang) { $cnt = preg_match('/([-a-zA-Z]+)\s*;\s*q=([0-9\.]+)/',$matches); if ($cnt === 0) $accept_language[$lang] = 1; else $accept_language[$matches[1]] = $matches[2]; }
整个脚本:
<?PHP $al = 'en-US,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\.]+)/',$matches); if ($cnt === 0) $accept_language[$lang] = 1; else $accept_language[$matches[1]] = $matches[2]; } print_r($accept_language);
以上是脚本宝典为你收集整理的php – 在数组中转换Accept-language输出全部内容,希望文章能够帮你解决php – 在数组中转换Accept-language输出所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。