Advertisement
Guest User

Untitled

a guest
Sep 28th, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.84 KB | None | 0 0
  1. <?php
  2.  
  3. function ua_match($ua){
  4.  
  5.     if (!empty($ua)) {
  6.  
  7.         $ua_match = array(
  8.             'Tizen[ /]?(\d+[\.\d]+)?' => 'Tizen',
  9.             'Sailfish|Jolla' => 'Sailfish OS',
  10.             '(?:Ali)?YunOS[ /]?(\d+[\.\d]+)?' => 'YunOS',
  11.             'Windows Phone (?:OS)?[ ]?(\d+[\.\d]+)' => 'Windows Phone',
  12.             'XBLWP7|Windows Phone' => 'Windows Phone',
  13.             'Windows CE(?: (\d+[\.\d]+))?' => 'Windows CE',
  14.             '(?:IEMobile|Windows Mobile)(?: (\d+[\.\d]+))?' => 'Windows Mobile',
  15.             'Windows NT 6.2; ARM;' => 'Windows RT',
  16.             'Windows NT 6.3; ARM;' => 'Windows RT',
  17.             'RazoDroiD(?: v(\d+[\.\d]*))?' => 'RazoDroiD',
  18.             'MildWild(?: CM-(\d+[\.\d]*))?' => 'MildWild',
  19.             'CyanogenMod(?:[\-/](?:CM)?(\d+[\.\d]*))?' => 'CyanogenMod',
  20.             '(?:.*_)?MocorDroid(?:(\d+[\.\d]*))?' => 'MocorDroid',
  21.             '(?:(?:Orca-)?Android|Adr)[ /](?:[a-z]+ )?(\d+[\.\d]+)' => 'Android',
  22.             'Android|Silk-Accelerated=[a-z]{4,5}' => 'Android',
  23.             'BeyondPod|AntennaPod|Podkicker|DoggCatcher' => 'Android',
  24.             'AmigaOS[ ]?(\d+[\.\d]+)' => 'AmigaOS',
  25.             'AmigaOS|AmigaVoyager|Amiga-AWeb' => 'AmigaOS',
  26.             'ThreadX(?:/(\d+[\.\d]*))?' => 'ThreadX',
  27.             'Nucleus(?:(?: |/v?)(\d+[\.\d]*))?' => 'MTK / Nucleus',
  28.             'MTK(?:(?: |/v?)(\d+[\.\d]*))?' => 'MTK / Nucleus',
  29.             'Maemo' => 'Maemo',
  30.             'Arch ?Linux(?:[ /\-](\d+[\.\d]+))?' => 'Arch Linux',
  31.             'VectorLinux(?: package)?(?:[ /\-](\d+[\.\d]+))?' => 'VectorLinux',
  32.             'Linux; .*((?:Debian|Knoppix|Mint|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack))[ /](\d+[\.\d]+)' => '$1',
  33.             '(Debian|Knoppix|Mint|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack)(?:(?: Enterprise)? Linux)?(?:[ /\-](\d+[\.\d]+))?' => '$1',
  34.             '(?:webOS|Palm webOS)(?:/(\d+[\.\d]+))?' => 'webOS',
  35.             '(?:PalmOS|Palm OS)(?:[/ ](\d+[\.\d]+))?|Palm' => 'palmOS',
  36.             'Xiino(?:.*v\. (\d+[\.\d]+))?' => 'palmOS',
  37.             'MorphOS(?:[ /](\d+[\.\d]+))?' => 'MorphOS',
  38.             'CYGWIN_NT-10.0|Windows NT 10.0|Windows 10' => 'Windows',
  39.             'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10' => 'Windows',
  40.             'CYGWIN_NT-6.3|Windows NT 6.3|Windows 8.1' => 'Windows',
  41.             'CYGWIN_NT-6.2|Windows NT 6.2|Windows 8' => 'Windows',
  42.             'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7' => 'Windows',
  43.             'CYGWIN_NT-6.0|Windows NT 6.0|Windows Vista' => 'Windows',
  44.             'CYGWIN_NT-5.2|Windows NT 5.2|Windows Server 2003 / XP x64' => 'Windows',
  45.             'CYGWIN_NT-5.1|Windows NT 5.1|Windows XP' => 'Windows',
  46.             'CYGWIN_NT-5.0|Windows NT 5.0|Windows 2000' => 'Windows',
  47.             'CYGWIN_NT-4.0|Windows NT 4.0|WinNT|Windows NT' => 'Windows',
  48.             'CYGWIN_ME-4.90|Win 9x 4.90|Windows ME' => 'Windows',
  49.             'CYGWIN_98-4.10|Win98|Windows 98' => 'Windows',
  50.             'CYGWIN_95-4.0|Win32|Win95|Windows 95|Windows_95' => 'Windows',
  51.             'Windows 3.1' => 'Windows',
  52.             'Windows' => 'Windows',
  53.             'CFNetwork/758\.4\.3' => 'iOS',
  54.             'CFNetwork/758\.3\.15' => 'iOS',
  55.             'CFNetwork/758\.2\.[78]' => 'iOS',
  56.             'CFNetwork/758\.1\.6' => 'iOS',
  57.             'CFNetwork/758\.0\.2' => 'iOS',
  58.             'CFNetwork/711\.5\.6' => 'iOS',
  59.             'CFNetwork/711\.4\.6' => 'iOS',
  60.             'CFNetwork/711\.3\.18' => 'iOS',
  61.             'CFNetwork/711\.2\.23' => 'iOS',
  62.             'CFNetwork/711\.1\.1[26]' => 'iOS',
  63.             'CFNetwork/711\.0\.6' => 'iOS',
  64.             'CFNetwork/672\.1' => 'iOS',
  65.             'CFNetwork/672\.0' => 'iOS',
  66.             'CFNetwork/609\.1' => 'iOS',
  67.             'CFNetwork/60[29]' => 'iOS',
  68.             'CFNetwork/548\.1' => 'iOS',
  69.             'CFNetwork/548\.0' => 'iOS',
  70.             'CFNetwork/485\.13' => 'iOS',
  71.             'CFNetwork/485\.12' => 'iOS',
  72.             'CFNetwork/485\.10' => 'iOS',
  73.             'CFNetwork/485\.2' => 'iOS',
  74.             'CFNetwork/467\.12' => 'iOS',
  75.             'CFNetwork/459' => 'iOS',
  76.             '(?:CPU OS|iPh(?:one)?[ _]OS|iOS)[ _/](\d+(?:[_\.]\d+)*)' => 'iOS',
  77.             '(?:Apple-)?(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?' => 'iOS',
  78.             'Podcasts/(?:[\d\.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|Overcast|Castro|Podcat|i[cC]atcher' => 'iOS',
  79.             'iTunes-(iPod|iPad|iPhone)/(?:[\d\.]+)' => 'iOS',
  80.             'CFNetwork/760' => 'Mac',
  81.             'CFNetwork/720' => 'Mac',
  82.             'CFNetwork/673' => 'Mac',
  83.             'CFNetwork/596' => 'Mac',
  84.             'CFNetwork/520' => 'Mac',
  85.             'CFNetwork/454' => 'Mac',
  86.             'CFNetwork/(?:438|422|339|330|221|220|217)' => 'Mac',
  87.             'CFNetwork/12[89]' => 'Mac',
  88.             'CFNetwork/1\.2' => 'Mac',
  89.             'CFNetwork/1\.1' => 'Mac',
  90.             'Mac OS X(?: (?:Version )?(\d+(?:[_\.]\d+)+))?' => 'Mac',
  91.             'Mac (\d+(?:[_\.]\d+)+)' => 'Mac',
  92.             'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC|iMac|MacBook' => 'Mac',
  93.             'CrOS [a-z0-9_]+ (\d+[\.\d]+)' => 'Chrome OS',
  94.             '(?:BB10;.+Version|Black[Bb]erry[0-9a-z]+|Black[Bb]erry.+Version)/(\d+[\.\d]+)' => 'BlackBerry OS',
  95.             'RIM Tablet OS (\d+[\.\d]+)' => 'BlackBerry Tablet OS',
  96.             'RIM Tablet OS|QNX|Play[Bb]ook' => 'BlackBerry Tablet OS',
  97.             'BlackBerry' => 'BlackBerry OS',
  98.             'Haiku' => 'Haiku OS',
  99.             'BeOS' => 'BeOS',
  100.             'Symbian/3.+NokiaBrowser/7\.3' => 'Symbian^3',
  101.             'Symbian/3.+NokiaBrowser/7\.4' => 'Symbian^3',
  102.             'Symbian/3' => 'Symbian^3',
  103.             '(?:Series ?60|SymbOS|S60)(?:[ /]?(\d+[\.\d]+|V\d+))?' => 'Symbian OS Series 60',
  104.             'Series40' => 'Symbian OS Series 40',
  105.             'SymbianOS/(\d+[\.\d]+)' => 'Symbian OS',
  106.             'MeeGo|WeTab' => 'MeeGo',
  107.             'Symbian(?: OS)?|SymbOS' => 'Symbian OS',
  108.             'Nokia' => 'Symbian',
  109.             '(?:Mobile|Tablet);.+Firefox/\d+\.\d+' => 'Firefox OS',
  110.             'RISC OS(?:-NC)?(?:[ /](\d+[\.\d]+))?' => 'RISC OS',
  111.             'Inferno(?:[ /](\d+[\.\d]+))?' => 'Inferno',
  112.             'bada(?:[ /](\d+[\.\d]+))' => 'Bada',
  113.             'bada' => 'Bada',
  114.             '(?:Brew MP|BREW|BMP)(?:[ /](\d+[\.\d]+))' => 'Brew',
  115.             'Brew MP|BREW|BMP' => 'Brew',
  116.             'GoogleTV(?:[ /](\d+[\.\d]+))?' => 'Google TV',
  117.             'AppleTV(?:/?(\d+[\.\d]+))?' => 'Apple TV',
  118.             'WebTV/(\d+[\.\d]+)' => 'WebTV',
  119.             'RemixOS 5.1.1' => 'Remix OS',
  120.             'RemixOS 6.0' => 'Remix OS',
  121.             'RemixOS' => 'Remix OS',
  122.             '(?:SunOS|Solaris)(?:[/ ](\d+[\.\d]+))?' => 'Solaris',
  123.             'AIX(?:[/ ]?(\d+[\.\d]+))?' => 'AIX',
  124.             'HP-UX(?:[/ ]?(\d+[\.\d]+))?' => 'HP-UX',
  125.             'FreeBSD(?:[/ ]?(\d+[\.\d]+))?' => 'FreeBSD',
  126.             'NetBSD(?:[/ ]?(\d+[\.\d]+))?' => 'NetBSD',
  127.             'OpenBSD(?:[/ ]?(\d+[\.\d]+))?' => 'OpenBSD',
  128.             'DragonFly(?:[/ ]?(\d+[\.\d]+))?' => 'DragonFly',
  129.             'Syllable(?:[/ ]?(\d+[\.\d]+))?' => 'Syllable',
  130.             'IRIX(?:;64)?(?:[/ ]?(\d+[\.\d]+))' => 'IRIX',
  131.             'OSF1(?:[/ ]?v?(\d+[\.\d]+))?' => 'OSF1',
  132.             'Nintendo Wii' => 'Nintendo',
  133.             'PlayStation ?([3|4])' => 'PlayStation',
  134.             'Xbox|KIN\.(?:One|Two)' => 'Xbox',
  135.             'Nitro|Nintendo ([3]?DS[i]?)' => 'Nintendo Mobile',
  136.             'PlayStation ((?:Portable|Vita))' => 'PlayStation Portable',
  137.             'OS/2' => 'OS/2',
  138.             'Linux(?:OS)?[^a-z]' => 'GNU/Linux',
  139.         );
  140.  
  141.  
  142.         foreach (array_keys($ua_match) as $k) {
  143.             if (preg_match('/' . $k . '/s', $ua, $matches)) {
  144.                 return ($matches[0]);
  145.                 exit;
  146.             }
  147.         }
  148.     return '';
  149.  
  150.     }
  151.  
  152. }
  153.  
  154. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement