<?php
foreach (explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $lang) {
 $pattern = '/^(?P<primarytag>[a-zA-Z]{2,8})'.
 '(?:-(?P<subtag>[a-zA-Z]{2,8}))?(?:(?:;q=)'.
 '(?P<quantifier>\d\.\d))?$/';
 $splits = array();
 printf("Lang:,,%s''\n", $lang);
 if (preg_match($pattern, $lang, $splits)) {
 print_r($splits);
 } else {
 echo "\nno match\n";
 }
}
?>
示例输出
Google Chrome 3.0.195.27 Windows xp
Lang:,,de-DE''
数组
(
[0] => de-DE
[primarytag] => de
[1] => de
[subtag] => DE
[2] => DE
)
Lang:,,de;q=0.8''
数组
(
[0] => de;q=0.8
[primarytag] => de
[1] => de
[subtag] =>
    [2] => 
[quantifier] => 0.8
    [3] => 0.8
)
Lang:,,en-US;q=0.6''
数组
(
[0] => en-US;q=0.6
[primarytag] => en
[1] => en
[subtag] => US
[2] => US
[quantifier] => 0.6
    [3] => 0.6
)
Lang:,,en;q=0.4''
数组
(
[0] => en;q=0.4
[primarytag] => en
[1] => en
[subtag] =>
    [2] => 
[quantifier] => 0.4
    [3] => 0.4
)