Любой php-код для определения браузера с версией и операционной системой? - PullRequest
9 голосов
/ 26 января 2010

Я пытался найти в Google, но не могу найти полное решение (я только нахожу, что что-то обнаруживает только тип браузера, как Firefox, Opera).

Я хочу, чтобы класс php или код проверяли браузер пользователя, включая версию , а также операционную систему.

Спасибо

Ответы [ 4 ]

21 голосов
/ 21 января 2012

простой способ, например:

function browser() {
    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);
    // you can add different browsers with the same way ..
    if(preg_match('/(chromium)[ \/]([\w.]+)/', $ua))
            $browser = 'chromium';
    elseif(preg_match('/(chrome)[ \/]([\w.]+)/', $ua))
            $browser = 'chrome';
    elseif(preg_match('/(safari)[ \/]([\w.]+)/', $ua))
            $browser = 'safari';
    elseif(preg_match('/(opera)[ \/]([\w.]+)/', $ua))
            $browser = 'opera';
    elseif(preg_match('/(msie)[ \/]([\w.]+)/', $ua))
            $browser = 'msie';
    elseif(preg_match('/(mozilla)[ \/]([\w.]+)/', $ua))
            $browser = 'mozilla';

    preg_match('/('.$browser.')[ \/]([\w]+)/', $ua, $version);

    return array($browser,$version[2], 'name'=>$browser,'version'=>$version[2]);
}

его возврат как

chromium 15
chrome 16
opera 9
11 голосов
/ 26 января 2010

Я использовал techpatterns.com один, и они не всегда обновляют его, и он использует процедурный код, который кажется устаревшим ...

Класс PHP * Wolfcast BrowserDetection обновлен и использует для этого объектно-ориентированный способ:

Вы используете это так:

$browser = new BrowserDetection();
echo 'You are using ', $browser->getBrowser(), ' version ', $browser->getVersion();

Другой пример:

$browser = new BrowserDetection();
if ($browser->getBrowser() == BrowserDetection::BROWSER_FIREFOX && $browser->compareVersions($browser->getVersion(), '5.0.1') !== 1) {
    echo 'You have FireFox version 5.0.1 or greater. ';
}
5 голосов
/ 26 января 2010

PHP на самом деле имеет собственный метод обнаружения информации браузера, называемый get-browser

Непосредственно скопировано из документации PHP:

<?php
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";

$browser = get_browser(null, true);
print_r($browser);
?>

Приведенный выше пример выведет что-то похожее на: Mozilla / 5.0 (Windows; U; Windows NT 5.1; ru-ru; rv: 1.7) Gecko / 20040803 Firefox / 0.9.3

Array
(
    [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$
    [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*
    [parent] => Firefox 0.9
    [platform] => WinXP
    [browser] => Firefox
    [version] => 0.9
    [majorver] => 0
    [minorver] => 9
    [cssversion] => 2
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] => 1
    [backgroundsounds] =>
    [vbscript] =>
    [javascript] => 1
    [javaapplets] => 1
    [activexcontrols] =>
    [cdf] =>
    [aol] =>
    [beta] => 1
    [win16] =>
    [crawler] =>
    [stripper] =>
    [wap] =>
    [netclr] =>
)

1 голос
/ 26 января 2010

get_browser() предоставляет версию браузера и операционную систему

$browser = get_browser();

foreach ($browser as $name => $value) {
    echo "$name $value\n";
}

output:
browser_name_pattern:</b> Mozilla/4\.5.*
parent: Netscape 4.0
platform: Linux
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...