- // create a list like "en" => 0.8
- $langs = array_combine($lang_parse[1], $lang_parse[4]);
-
- // set default to 1 for any without q factor
- foreach ($langs as $lang => $val) {
- if ($val === '') $langs[$lang] = 1;
+ // go through the list of prefered languages and add a generic language
+ // for sub-linguas (e.g. de-ch will add de) if not already in array
+ for ($i = 0; $i < count($lang_parse[1]); $i++) {
+ $lang_list[] = strtolower($lang_parse[1][$i]);
+ if (strlen($lang_parse[1][$i])>3 ) {
+ $dashpos = strpos($lang_parse[1][$i], '-');
+ if (!in_array(substr($lang_parse[1][$i], 0, $dashpos), $lang_list ) ) {
+ $lang_list[] = strtolower(substr($lang_parse[1][$i], 0, $dashpos));
+ }
+ }