Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Наиболее полный парсинг USER_AGENT'a
 
 автор: NIK   (06.01.2007 в 17:59)   письмо автору
 
 

Никак не найду скрипт или данные для наиболее полного разбора $_SERVER['HTTP_USER_AGENT'] клиента на браузер и ОС. Имею в виду не те скрипты, которые гребут всё под одну гребёнку, скажем Linux и остальные nix-подобные, а определяют более точно. Или ещё скрипты для примера, которые определяют три браузера - IE, FF, Opera... Короче я думаю понятно о чём говорю. Так вот где взять возвращаемые данные юзер агента самых различных браузеров и ОС? Наилучший вариант был бы готовый код.

   
 
 автор: Евгений Петров   (06.01.2007 в 18:25)   письмо автору
 
   для: NIK   (06.01.2007 в 17:59)
 

Как то давно развлекался я и в итоге получилось следующее:
<?
    
function GetOS($string)
    {
        if(
stripos($string,"windows ") != null ||
            
stripos($string,"winnt") != null ||
            
stripos($string,"win ") != null ||
            
preg_match("/win[0-9]{2}/i",$string))
        {
            
preg_match("/(windows |winnt|win |win[0-9]{2})[^;)]*/i",$string,$regs);
            return 
$regs[0];
        }
        if(
stripos($string,"powerpc") != null ||
            
stripos($string,"macintosh") != null ||
            
stripos($string,"mac os") != null)
        {
            return 
"Macintosh";
        }
        if(
stripos($string,"freebsd") != null ||
            
stripos($string,"linux") != null ||
            
stripos($string,"unix") != null ||
            
stripos($string,"lynx") != null)
        {
            
preg_match("/(freebsd|linux|unix|lynx)[^;)-]*/i",$string,$regs);
            return 
$regs[0];
        }
        return 
"Other";
      }

    function 
GetBrows($string)
    {
        if(
stripos($string,"opera") !== false)
        {
            
preg_match("/opera[^\"(\[]*/i",$string,$regs);
            return 
str_replace("/"," ",$regs[0]);
        }
        if(
stripos($string,"konqueror") !== false ||
            
stripos($string,"safari") !== false)
        {
            
preg_match("/(konqueror|safari)[^;)]*/i",$string,$regs);
            return 
str_replace("/"," ",$regs[0]);
        }
        if(
stripos($string,"gecko") !== false)
        {
            
preg_match("/rv:([^;)]*)/i",$string,$regs);
            if(
stripos($string,"firefox") !== false)
                
$str " (Firefox)";
            elseif(
stripos($string,"netscape") !== false)
                
$str " (Netscape)";
            return 
"Mozilla$str $regs[1]";
        }
        if(
stripos($string,"myie") !== false)
        {
            
preg_match("/myie[^;)]*/i",$string,$regs);
            return 
str_replace("/"," ",$regs[0]);
        }
        if(
stripos($string,"MSIE") != null)
        {
            
preg_match("/MSIE([^;)]*)/i",$string,$regs);
            return 
"Internet Explorer $regs[1]";
        }
        return 
"Other";
    }
?>

Громоздко, но зато довольно точно

   
 
 автор: NIK   (06.01.2007 в 21:03)   письмо автору
 
   для: Евгений Петров   (06.01.2007 в 18:25)
 

спасибо. Проверил на браузерах - без нареканий. Вот к сожалению на ОСях проверить возможности нет. Ты сам не видел это в действии ?

   
 
 автор: Евгений Петров   (06.01.2007 в 22:55)   письмо автору
 
   для: NIK   (06.01.2007 в 21:03)
 

Как то ставил на сайт но не долго он там был. В основном все на виндоусе сидят :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования