Мне удалось найти в Интернете тут php-функцию определения браузера, умеющую отличать даже браузер Opera, но при этом эта функция почему-то не хочет читать версию Oper'ы. Версию других браузеров (я проверял ещё Firefox и Edge) определяет на ура, а вот Оперную версию - игнорирует, хотя видимых отличий в её написании от версий Firefox и Edge в строке HTTP_USER_AGENT - нет.
Помогите разобраться, пожалуйста. Ниже привожу код функции и её вызова:
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- function getBrowser1() {
- $u_agent = $_SERVER['HTTP_USER_AGENT'];
- $bname = 'Unknown';
- $platform = 'Unknown';
- $version= "";
- $platform = 'linux';
- $platform = 'mac';
- $platform = 'windows';
- };
- if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) {// Next get the name of the useragent yes seperately and for good reason
- $bname = 'Internet Explorer';
- $ub = "MSIE";
- $bname = 'Mozilla Firefox';
- $ub = "Firefox";
- $bname = 'Opera';
- $ub = "Opera";
- $bname = 'Google Chrome';
- $ub = "Chrome";
- $bname = 'Apple Safari';
- $ub = "Safari";
- $bname = 'Netscape';
- $ub = "Netscape";
- $bname = 'Edge';
- $ub = "Edg";
- $bname = 'Internet Explorer';
- $ub = "MSIE";
- }; // finally get the correct version number:
- // we have no matching number just continue
- }; // see how many we have:
- if ($i != 1) {//we will have two since we are not using 'other' argument yet //see if version is before or after the name
- } else {
- };
- } else {
- //$version = (!empty($matches['version']) ? $matches['version'][0] : '');
- }; // check if we have a number:
- if ($version==null || $version=="") {
- $version="?";
- };
- return [
- 'userAgent' => $u_agent,
- 'name' => $bname,
- 'version' => $version,
- 'platform' => $platform,
- 'pattern' => $pattern
- ];
- }
- // invoke function
- $arBrowser = getBrowser1();
- echo '<pre>';
- echo '</pre>';