Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Removes garbage from user agent string
- * @param String User agent
- * @return String User agent
- */
- public static function cleanUserAgent($ua) {
- $ua = self::removeUPLinkFromUA($ua);
- // Remove serial number
- $ua = preg_replace('/\/SN\d{15}/', '/SNXXXXXXXXXXXXXXX', $ua);
- // Remove locale identifier for xx-xx
- $ua = preg_replace('/([ ;])[a-zA-Z]{2}-[a-zA-Z]{2}([ ;\)])/', '$1xx-xx$2', $ua);
- // Remove locale identifier for xx
- if (preg_match('/([ ;])[a-zA-Z]{2}([ ;\)])/', $ua, $matches)) {
- $support_languages = self::parseLanguages();
- foreach ($matches as $language) {
- if (in_array(strtolower(substr(trim($language), 0, 2)), $support_languages))
- $ua = preg_replace('/([ ;])[a-zA-Z]{2}([ ;\)])/', '$1xx-xx$2', $ua);
- }
- }
- $ua = self::normalizeBlackberry($ua);
- return $ua;
- }
- /**
- * Get the langages from header
- * @return array
- */
- public static function parseLanguages() {
- $lang = array();
- if(!array_key_exists('HTTP_ACCEPT_LANGUAGE',$_SERVER)) return $lang;
- $http_accept_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
- // Split possible languages into array
- $x = explode(",", $http_accept_lang);
- foreach ($x as $val) {
- //check for q-value and create associative array. No q-value means 1 by rule
- if (preg_match("/(.*);q=([0-1]{0,1}\.\d{0,4})/i", $val, $matches)) {
- $lang[] = strtolower($matches[1]);
- } else {
- $lang[] = strtolower($val);
- }
- }
- return $lang;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement