| Function getPreferredLanguage (){ $ Langs = array (); If (isset ($ _ SERVER ['HTTP _ ACCEPT_LANGUAGE ']) { // Break up string into pieces (ages and q factors) Preg_match_all ('/([a-z] {} (-[a-z })?) \ S * (; \ s * q \ s * = \ s * (1 | 0 \. [0-9] + ))? /I ', $ _ SERVER ['HTTP _ ACCEPT_LANGUAGE'], $ lang_parse ); If (count ($ lang_parse [1]) { // Create a list like "en" = & gt; 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; } // Sort list based on value Arsort ($ langs, SORT_NUMERIC ); } } // Extract most important (first) Foreach ($ langs as $ lang => $ val) {break ;} // If complex language simplify it If (stristr ($ lang, "-") {$ tmp = explode ("-", $ lang); $ lang = $ tmp [0];} Return $ lang; } |