За последние 24 часа нас посетили 17795 программистов и 1335 роботов. Сейчас ищут 1228 программистов ...

Парсинг useragent: определяем множество браузеров

Тема в разделе "Регулярные выражения", создана пользователем peacemakerv, 14 мар 2025.

Метки:
  1. peacemakerv

    peacemakerv Активный пользователь

    С нами с:
    23 май 2020
    Сообщения:
    4
    Симпатии:
    0
    Привет

    Хочу поделится вот такой процедурой парсинга useragent, и заодно может со временем сообщество поможет улучшить\дополнить код:

    Вызываем, ясное дело, так:
    PHP:
    1. function get_client_info($user_agent) {
    2.     $browser = "Browser ?";
    3.     $version = "Version ?";
    4.     $os = "OS ?";
    5.     $os_version = "Version ?";
    6.  
    7.     // Определение операционной системы и её версии
    8.     if (preg_match('/windows nt 10\.0/i', $user_agent)) {
    9.         $os = 'Windows';
    10.         // Проверка на Windows 11
    11.         if (preg_match('/windows 11/i', $user_agent)) {
    12.             $os_version = '11';
    13.         } else {
    14.             $os_version = '10';
    15.         }
    16.     } elseif (preg_match('/windows nt 6.3/i', $user_agent)) {
    17.         $os = 'Windows';
    18.         $os_version = '8.1';
    19.     } elseif (preg_match('/windows nt 6.2/i', $user_agent)) {
    20.         $os = 'Windows';
    21.         $os_version = '8';
    22.     } elseif (preg_match('/windows nt 6.1/i', $user_agent)) {
    23.         $os = 'Windows';
    24.         $os_version = '7';
    25.     } elseif (preg_match('/windows nt 6.0/i', $user_agent)) {
    26.         $os = 'Windows';
    27.         $os_version = 'Vista';
    28.     } elseif (preg_match('/windows nt 5.1/i', $user_agent)) {
    29.         $os = 'Windows';
    30.         $os_version = 'XP';
    31.     } elseif (preg_match('/android/i', $user_agent)) {
    32.         $os = 'Android';
    33.         if (preg_match('/android (\d+\.\d+)/i', $user_agent, $matches)) {
    34.             $os_version = $matches[1];
    35.         }
    36.     } elseif (preg_match('/iphone|ipad|ipod/i', $user_agent)) {
    37.         $os = 'iOS';
    38.         if (preg_match('/os (\d+)[._](\d+)/i', $user_agent, $matches)) {
    39.             $os_version = $matches[1] . '.' . $matches[2];
    40.         }
    41.     } elseif (preg_match('/macintosh|mac os x/i', $user_agent)) {
    42.         $os = 'Mac OS';
    43.         if (preg_match('/mac os x (\d+)[._](\d+)/i', $user_agent, $matches)) {
    44.             $os_version = $matches[1] . '.' . $matches[2];
    45.         }
    46.     } elseif (preg_match('/linux/i', $user_agent)) {
    47.         $os = 'Linux';
    48.         if (preg_match('/ubuntu/i', $user_agent)) {
    49.             $os = 'Ubuntu';
    50.             if (preg_match('/ubuntu\/(\d+\.\d+)/i', $user_agent, $matches)) {
    51.                 $os_version = $matches[1];
    52.             }
    53.         }
    54.     }
    55.  
    56.     // Определение браузера и его версии
    57.     if (preg_match('/yabrowser/i', $user_agent)) {
    58.         $browser = 'Yandex Browser';
    59.         preg_match('/yabrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    60.         if (!empty($matches[1])) {
    61.             $version = $matches[1];
    62.         }
    63.     } elseif (preg_match('/vivaldi/i', $user_agent)) {
    64.         $browser = 'Vivaldi';
    65.         preg_match('/vivaldi\/(\d+\.\d+)/i', $user_agent, $matches);
    66.         if (!empty($matches[1])) {
    67.             $version = $matches[1];
    68.         }
    69.     } elseif (preg_match('/brave/i', $user_agent)) {
    70.         $browser = 'Brave';
    71.         preg_match('/brave\/(\d+\.\d+)/i', $user_agent, $matches);
    72.         if (!empty($matches[1])) {
    73.             $version = $matches[1];
    74.         }
    75.     } elseif (preg_match('/duckduckgo/i', $user_agent)) {
    76.         $browser = 'DuckDuckGo';
    77.         preg_match('/duckduckgo\/(\d+\.\d+)/i', $user_agent, $matches);
    78.         if (!empty($matches[1])) {
    79.             $version = $matches[1];
    80.         }
    81.     } elseif (preg_match('/samsungbrowser/i', $user_agent)) {
    82.         $browser = 'Samsung Internet';
    83.         preg_match('/samsungbrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    84.         if (!empty($matches[1])) {
    85.             $version = $matches[1];
    86.         }
    87.     } elseif (preg_match('/lgbrowser/i', $user_agent)) {
    88.         $browser = 'LG Browser';
    89.         preg_match('/lgbrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    90.         if (!empty($matches[1])) {
    91.             $version = $matches[1];
    92.         }
    93.     } elseif (preg_match('/huaweibrowser|hbpc/i', $user_agent)) {
    94.         $browser = 'Huawei Browser';
    95.         preg_match('/huaweibrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    96.         if (!empty($matches[1])) {
    97.             $version = $matches[1];
    98.         }
    99.     } elseif (preg_match('/miuibrowser/i', $user_agent)) {
    100.         $browser = 'Mi Browser';
    101.         preg_match('/miuibrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    102.         if (!empty($matches[1])) {
    103.             $version = $matches[1];
    104.         }
    105.     } elseif (preg_match('/oppobrowser/i', $user_agent)) {
    106.         $browser = 'Oppo Browser';
    107.         preg_match('/oppobrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    108.         if (!empty($matches[1])) {
    109.             $version = $matches[1];
    110.         }
    111.     } elseif (preg_match('/vivobrowser/i', $user_agent)) {
    112.         $browser = 'Vivo Browser';
    113.         preg_match('/vivobrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    114.         if (!empty($matches[1])) {
    115.             $version = $matches[1];
    116.         }
    117.     } elseif (preg_match('/ucbrowser/i', $user_agent)) {
    118.         $browser = 'UC Browser';
    119.         preg_match('/ucbrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    120.         if (!empty($matches[1])) {
    121.             $version = $matches[1];
    122.         }
    123.     } elseif (preg_match('/opr/i', $user_agent)) {
    124.         $browser = 'Opera';
    125.         preg_match('/opr\/(\d+\.\d+)/i', $user_agent, $matches);
    126.         if (!empty($matches[1])) {
    127.             $version = $matches[1];
    128.         }
    129.     } elseif (preg_match('/edg/i', $user_agent)) {
    130.         $browser = 'Microsoft Edge (Chromium)';
    131.         preg_match('/edg\/(\d+\.\d+)/i', $user_agent, $matches);
    132.         if (!empty($matches[1])) {
    133.             $version = $matches[1];
    134.         }
    135.     } elseif (preg_match('/chromium/i', $user_agent)) {
    136.         $browser = 'Chromium';
    137.         preg_match('/chromium\/(\d+\.\d+)/i', $user_agent, $matches);
    138.         if (!empty($matches[1])) {
    139.             $version = $matches[1];
    140.         }
    141.     } elseif (preg_match('/epic/i', $user_agent)) {
    142.         $browser = 'Epic Privacy Browser';
    143.         preg_match('/epic\/(\d+\.\d+)/i', $user_agent, $matches);
    144.         if (!empty($matches[1])) {
    145.             $version = $matches[1];
    146.         }
    147.     } elseif (preg_match('/slimjet/i', $user_agent)) {
    148.         $browser = 'Slimjet';
    149.         preg_match('/slimjet\/(\d+\.\d+)/i', $user_agent, $matches);
    150.         if (!empty($matches[1])) {
    151.             $version = $matches[1];
    152.         }
    153.     } elseif (preg_match('/dragon/i', $user_agent)) {
    154.         $browser = 'Comodo Dragon';
    155.         preg_match('/dragon\/(\d+\.\d+)/i', $user_agent, $matches);
    156.         if (!empty($matches[1])) {
    157.             $version = $matches[1];
    158.         }
    159.     } elseif (preg_match('/360browser|qhbrowser/i', $user_agent)) {
    160.         $browser = '360 Browser';
    161.         preg_match('/360browser\/(\d+\.\d+)/i', $user_agent, $matches);
    162.         if (!empty($matches[1])) {
    163.             $version = $matches[1];
    164.         }
    165.     } elseif (preg_match('/coc coc/i', $user_agent)) {
    166.         $browser = 'Coc Coc';
    167.         preg_match('/coc coc\/(\d+\.\d+)/i', $user_agent, $matches);
    168.         if (!empty($matches[1])) {
    169.             $version = $matches[1];
    170.         }
    171.     } elseif (preg_match('/msie/i', $user_agent) && !preg_match('/opera/i', $user_agent)) {
    172.         $browser = 'Internet Explorer';
    173.         preg_match('/msie\s(\d+)/i', $user_agent, $matches);
    174.         if (!empty($matches[1])) {
    175.             $version = $matches[1];
    176.         }
    177.     } elseif (preg_match('/firefox/i', $user_agent)) {
    178.         $browser = 'Mozilla Firefox';
    179.         preg_match('/firefox\/(\d+)/i', $user_agent, $matches);
    180.         if (!empty($matches[1])) {
    181.             $version = $matches[1];
    182.         }
    183.     } elseif (preg_match('/chrome/i', $user_agent) && !preg_match('/edge|yabrowser|vivaldi|brave|duckduckgo|samsungbrowser|ucbrowser|opr|lgbrowser|huaweibrowser|miuibrowser|oppobrowser|vivobrowser|chromium|epic|slimjet|dragon|360browser|coc coc/i', $user_agent)) {
    184.         $browser = 'Google Chrome';
    185.         preg_match('/chrome\/(\d+)/i', $user_agent, $matches);
    186.         if (!empty($matches[1])) {
    187.             $version = $matches[1];
    188.         }
    189.     } elseif (preg_match('/safari/i', $user_agent) && !preg_match('/chrome/i', $user_agent)) {
    190.         $browser = 'Apple Safari';
    191.         preg_match('/version\/(\d+)/i', $user_agent, $matches);
    192.         if (!empty($matches[1])) {
    193.             $version = $matches[1];
    194.         }
    195.     }
    196.  
    197.     if ($browser == "Browser ?" && $version == "Version ?" && $os == "OS ?" && $os_version == "Version ?") {
    198.         return $user_agent;
    199.     }
    200.  
    201.     return "$browser $version; $os $os_version";
    202. }
    Кто попробует у себя - просьба отписываться верно ли определена пара Браузер\Версия\Ось\Версия Оси, с указанием ваших данных.
    У меня верно отработали:
    Не совсем верно отработал вариант:

     
    #1 peacemakerv, 14 мар 2025
    Последнее редактирование: 14 мар 2025
  2. brevis

    brevis Активный пользователь

    С нами с:
    23 июл 2019
    Сообщения:
    93
    Симпатии:
    25
    https://github.com/WhichBrowser/Parser-PHP
    Чтобы заинтересовать "тусовку" надо сделать хотя бы на таком уровне.
    А так -- ну ок, молодец.
     
    #2 brevis, 15 мар 2025
    Последнее редактирование: 15 мар 2025
    peacemakerv нравится это.
  3. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    94
    Адрес:
    Бавария, Германия
    Добрый день!
    Советую так изменить return:
    PHP:
    1.  return [
    2.         "browser" => $browser,
    3.         "version" => $version ,
    4.         "os" => $os,
    5.         "os_version" => $os_version
    6.     ];
    И для тестирования браузеров на мобильных устройствах
    PHP:
    1. <html>
    2. <head>
    3. <meta name="viewport" content="width=device-width, initial-scale=1" />
    4. </head>
    5. <?php
    6. $sua = $_SERVER["HTTP_USER_AGENT"];
    7. $browser = get_client_info($sua);
    8.  
    9. echo "<div style=inline-size: 100wd;overflow-wrap: break-word>$sua</div><pre>";
    10. print_r($browser);
    Протестировал:
    Код (Text):
    1. Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0
    2.  
    3. Array
    4. (
    5.     [browser] => Mozilla Firefox
    6.     [version] => 136
    7.     [os] => Windows
    8.     [os_version] => 10
    9. )
    10.  
    11. Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 OPR/117.0.0.0
    12. Array
    13. (
    14.     [browser] => Opera
    15.     [version] => 117.0
    16.     [os] => Windows
    17.     [os_version] => 10
    18. )
    19.  
    20. Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36
    21. Array
    22. (
    23.     [browser] => Google Chrome
    24.     [version] => 134
    25.     [os] => Windows
    26.     [os_version] => 10
    27. )
    28.  
    29. Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0
    30. Array
    31. (
    32.     [browser] => Microsoft Edge (Chromium)
    33.     [version] => 134.0
    34.     [os] => Windows
    35.     [os_version] => 10
    36. )
    Удачи!
     
    #3 Vladimir Kheifets, 16 мар 2025
    Последнее редактирование: 16 мар 2025
    peacemakerv нравится это.
  4. peacemakerv

    peacemakerv Активный пользователь

    С нами с:
    23 май 2020
    Сообщения:
    4
    Симпатии:
    0
    Спасибо.

    Вот еще надо бы как-то проверить такую доделку, но win11 нету для проверки:

    PHP:
    1. $headers = [
    2.         'Sec-CH-UA-Platform' => $_SERVER['HTTP_SEC_CH_UA_PLATFORM'] ?? null,
    3.         'Sec-CH-UA-Platform-Version' => $_SERVER['HTTP_SEC_CH_UA_PLATFORM_VERSION'] ?? null,
    4.     ];
    5.     // Определение операционной системы и её версии
    6.     if (preg_match('/windows nt 10\.0/i', $user_agent)) { //Win 10 or 11
    7.         $os = 'Windows';
    8.         // Проверка на Windows 11
    9.         if (preg_match('/windows 11/i', $user_agent)) {
    10.             $os_version = '11';
    11.         } else {
    12.             $os_version = '10';
    13.         }
    14.         // Использование Client Hints для определения Windows 11
    15.         if (isset($headers['Sec-CH-UA-Platform']) && strtolower($headers['Sec-CH-UA-Platform']) === 'windows') {
    16.             if (isset($headers['Sec-CH-UA-Platform-Version']) && $headers['Sec-CH-UA-Platform-Version'] === '13.0.0') {
    17.                 $os_version = '11';
    18.             }else{
    19.                 $os_version = '10';
    20.             }
    21.         }
    22.     }.....

    PHP:
    1. function get_client_info($user_agent) {
    2.     $browser = "Browser ?";
    3.     $version = "v.?";
    4.     $os = "OS ?";
    5.     $os_version = "v.?";
    6.  
    7.     $headers = [
    8.         'Sec-CH-UA-Platform' => $_SERVER['HTTP_SEC_CH_UA_PLATFORM'] ?? null,
    9.         'Sec-CH-UA-Platform-Version' => $_SERVER['HTTP_SEC_CH_UA_PLATFORM_VERSION'] ?? null,
    10.     ];
    11.  
    12.     // Определение операционной системы и её версии
    13.     if (preg_match('/windows nt 10\.0/i', $user_agent)) { //Win 10 or 11
    14.         $os = 'Windows';
    15.         // Проверка на Windows 11
    16.         if (preg_match('/windows 11/i', $user_agent)) {
    17.             $os_version = '11';
    18.         } else {
    19.             $os_version = '10';
    20.         }
    21.         // Использование Client Hints для определения Windows 11
    22.         if (isset($headers['Sec-CH-UA-Platform']) && strtolower($headers['Sec-CH-UA-Platform']) === 'windows') {
    23.             if (isset($headers['Sec-CH-UA-Platform-Version']) && $headers['Sec-CH-UA-Platform-Version'] === '13.0.0') {
    24.                 $os_version = '11';
    25.             }else{
    26.                 $os_version = '10';
    27.             }
    28.         }
    29.     } elseif (preg_match('/windows nt 6.3/i', $user_agent)) {
    30.         $os = 'Windows';
    31.         $os_version = '8.1';
    32.     } elseif (preg_match('/windows nt 6.2/i', $user_agent)) {
    33.         $os = 'Windows';
    34.         $os_version = '8';
    35.     } elseif (preg_match('/windows nt 6.1/i', $user_agent)) {
    36.         $os = 'Windows';
    37.         $os_version = '7';
    38.     } elseif (preg_match('/windows nt 6.0/i', $user_agent)) {
    39.         $os = 'Windows';
    40.         $os_version = 'Vista';
    41.     } elseif (preg_match('/windows nt 5.1/i', $user_agent)) {
    42.         $os = 'Windows';
    43.         $os_version = 'XP';
    44.     } elseif (preg_match('/android/i', $user_agent)) {
    45.         $os = 'Android';
    46.         if (preg_match('/android (\d+\.\d+)/i', $user_agent, $matches)) {
    47.             $os_version = $matches[1];
    48.         }
    49.     } elseif (preg_match('/iphone|ipad|ipod/i', $user_agent)) {
    50.         $os = 'iOS';
    51.         if (preg_match('/os (\d+)[._](\d+)/i', $user_agent, $matches)) {
    52.             $os_version = $matches[1] . '.' . $matches[2];
    53.         }
    54.     } elseif (preg_match('/macintosh|mac os x/i', $user_agent)) {
    55.         $os = 'Mac OS';
    56.         if (preg_match('/mac os x (\d+)[._](\d+)/i', $user_agent, $matches)) {
    57.             $os_version = $matches[1] . '.' . $matches[2];
    58.         }
    59.     } elseif (preg_match('/linux/i', $user_agent)) {
    60.         $os = 'Linux';
    61.         if (preg_match('/ubuntu/i', $user_agent)) {
    62.             $os = 'Ubuntu';
    63.             if (preg_match('/ubuntu\/(\d+\.\d+)/i', $user_agent, $matches)) {
    64.                 $os_version = $matches[1];
    65.             }
    66.         }
    67.     }
    68.  
    69.     // Определение браузера и его версии
    70.     if (preg_match('/yabrowser/i', $user_agent)) {
    71.         $browser = 'Yandex Browser';
    72.         preg_match('/yabrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    73.         if (!empty($matches[1])) {
    74.             $version = $matches[1];
    75.         }
    76.     } elseif (preg_match('/vivaldi/i', $user_agent)) {
    77.         $browser = 'Vivaldi';
    78.         preg_match('/vivaldi\/(\d+\.\d+)/i', $user_agent, $matches);
    79.         if (!empty($matches[1])) {
    80.             $version = $matches[1];
    81.         }
    82.     } elseif (preg_match('/brave/i', $user_agent)) {
    83.         $browser = 'Brave';
    84.         preg_match('/brave\/(\d+\.\d+)/i', $user_agent, $matches);
    85.         if (!empty($matches[1])) {
    86.             $version = $matches[1];
    87.         }
    88.     } elseif (preg_match('/duckduckgo/i', $user_agent)) {
    89.         $browser = 'DuckDuckGo';
    90.         preg_match('/duckduckgo\/(\d+\.\d+)/i', $user_agent, $matches);
    91.         if (!empty($matches[1])) {
    92.             $version = $matches[1];
    93.         }
    94.     } elseif (preg_match('/samsungbrowser/i', $user_agent)) {
    95.         $browser = 'Samsung Internet';
    96.         preg_match('/samsungbrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    97.         if (!empty($matches[1])) {
    98.             $version = $matches[1];
    99.         }
    100.     } elseif (preg_match('/lgbrowser/i', $user_agent)) {
    101.         $browser = 'LG Browser';
    102.         preg_match('/lgbrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    103.         if (!empty($matches[1])) {
    104.             $version = $matches[1];
    105.         }
    106.     } elseif (preg_match('/huaweibrowser|hbpc/i', $user_agent)) {
    107.         $browser = 'Huawei Browser';
    108.         preg_match('/huaweibrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    109.         if (!empty($matches[1])) {
    110.             $version = $matches[1];
    111.         }
    112.     } elseif (preg_match('/miuibrowser/i', $user_agent)) {
    113.         $browser = 'Mi Browser';
    114.         preg_match('/miuibrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    115.         if (!empty($matches[1])) {
    116.             $version = $matches[1];
    117.         }
    118.     } elseif (preg_match('/oppobrowser/i', $user_agent)) {
    119.         $browser = 'Oppo Browser';
    120.         preg_match('/oppobrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    121.         if (!empty($matches[1])) {
    122.             $version = $matches[1];
    123.         }
    124.     } elseif (preg_match('/vivobrowser/i', $user_agent)) {
    125.         $browser = 'Vivo Browser';
    126.         preg_match('/vivobrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    127.         if (!empty($matches[1])) {
    128.             $version = $matches[1];
    129.         }
    130.     } elseif (preg_match('/ucbrowser/i', $user_agent)) {
    131.         $browser = 'UC Browser';
    132.         preg_match('/ucbrowser\/(\d+\.\d+)/i', $user_agent, $matches);
    133.         if (!empty($matches[1])) {
    134.             $version = $matches[1];
    135.         }
    136.     } elseif (preg_match('/opr/i', $user_agent)) {
    137.         $browser = 'Opera';
    138.         preg_match('/opr\/(\d+\.\d+)/i', $user_agent, $matches);
    139.         if (!empty($matches[1])) {
    140.             $version = $matches[1];
    141.         }
    142.     } elseif (preg_match('/edg/i', $user_agent)) {
    143.         $browser = 'Microsoft Edge (Chromium)';
    144.         preg_match('/edg\/(\d+\.\d+)/i', $user_agent, $matches);
    145.         if (!empty($matches[1])) {
    146.             $version = $matches[1];
    147.         }
    148.     } elseif (preg_match('/chromium/i', $user_agent)) {
    149.         $browser = 'Chromium';
    150.         preg_match('/chromium\/(\d+\.\d+)/i', $user_agent, $matches);
    151.         if (!empty($matches[1])) {
    152.             $version = $matches[1];
    153.         }
    154.     } elseif (preg_match('/epic/i', $user_agent)) {
    155.         $browser = 'Epic Privacy Browser';
    156.         preg_match('/epic\/(\d+\.\d+)/i', $user_agent, $matches);
    157.         if (!empty($matches[1])) {
    158.             $version = $matches[1];
    159.         }
    160.     } elseif (preg_match('/slimjet/i', $user_agent)) {
    161.         $browser = 'Slimjet';
    162.         preg_match('/slimjet\/(\d+\.\d+)/i', $user_agent, $matches);
    163.         if (!empty($matches[1])) {
    164.             $version = $matches[1];
    165.         }
    166.     } elseif (preg_match('/dragon/i', $user_agent)) {
    167.         $browser = 'Comodo Dragon';
    168.         preg_match('/dragon\/(\d+\.\d+)/i', $user_agent, $matches);
    169.         if (!empty($matches[1])) {
    170.             $version = $matches[1];
    171.         }
    172.     } elseif (preg_match('/360browser|qhbrowser/i', $user_agent)) {
    173.         $browser = '360 Browser';
    174.         preg_match('/360browser\/(\d+\.\d+)/i', $user_agent, $matches);
    175.         if (!empty($matches[1])) {
    176.             $version = $matches[1];
    177.         }
    178.     } elseif (preg_match('/coc coc/i', $user_agent)) {
    179.         $browser = 'Coc Coc';
    180.         preg_match('/coc coc\/(\d+\.\d+)/i', $user_agent, $matches);
    181.         if (!empty($matches[1])) {
    182.             $version = $matches[1];
    183.         }
    184.     } elseif (preg_match('/msie/i', $user_agent) && !preg_match('/opera/i', $user_agent)) {
    185.         $browser = 'Internet Explorer';
    186.         preg_match('/msie\s(\d+)/i', $user_agent, $matches);
    187.         if (!empty($matches[1])) {
    188.             $version = $matches[1];
    189.         }
    190.     } elseif (preg_match('/firefox/i', $user_agent)) {
    191.         $browser = 'Mozilla Firefox';
    192.         preg_match('/firefox\/(\d+)/i', $user_agent, $matches);
    193.         if (!empty($matches[1])) {
    194.             $version = $matches[1];
    195.         }
    196.     } elseif (preg_match('/chrome/i', $user_agent) && !preg_match('/edge|yabrowser|vivaldi|brave|duckduckgo|samsungbrowser|ucbrowser|opr|lgbrowser|huaweibrowser|miuibrowser|oppobrowser|vivobrowser|chromium|epic|slimjet|dragon|360browser|coc coc/i', $user_agent)) {
    197.         $browser = 'Google Chrome';
    198.         preg_match('/chrome\/(\d+)/i', $user_agent, $matches);
    199.         if (!empty($matches[1])) {
    200.             $version = $matches[1];
    201.         }
    202.     } elseif (preg_match('/safari/i', $user_agent) && !preg_match('/chrome/i', $user_agent)) {
    203.         $browser = 'Apple Safari';
    204.         preg_match('/version\/(\d+)/i', $user_agent, $matches);
    205.         if (!empty($matches[1])) {
    206.             $version = $matches[1];
    207.         }
    208.     }
    209.  
    210.     if ($browser == "Browser ?" && $version == "v.?" && $os == "OS ?" && $os_version == "v.?") {
    211.         return $user_agent;
    212.     }
    213.  
    214.     return "$browser $version; $os $os_version";
    215. }

    У кого Win11 - протестируйте, определяется ли Win11.
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.801
    Симпатии:
    1.331
    Адрес:
    Лень
    у меня виндовс 20
     
  6. peacemakerv

    peacemakerv Активный пользователь

    С нами с:
    23 май 2020
    Сообщения:
    4
    Симпатии:
    0
    Как там в будущем, машины летают ? Телепортируют ? :)
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.124
    Симпатии:
    1.246
    Адрес:
    там-сям
    У нормальных людей уже Windows 25.

    "Мы думали в 2025 люди будут покорять другие планеты, телепорт, человекоподобные роботы в каждом доме и всеобщее процветание..."
     
  8. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    926
    Симпатии:
    144
    кхм, не-не-не, Windows 360 же )