Агент пользователя, извлечение ОС и браузера из строки

Я хотел бы извлечь полное имя ОС и браузер из строки пользовательского агента. Как я могу это сделать?

Я думаю, что сложно получить полное имя ОС и полное имя браузера, поскольку многие браузеры идентифицируют себя по-разному. Вам, вероятно, понадобится какое-то причудливое регулярное выражение, и тогда он может даже не работать в 100% случаев.

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

<?php public static function getUserAgent() { static $agent = null; if ( empty($agent) ) { $agent = $_SERVER['HTTP_USER_AGENT']; if ( stripos($agent, 'Firefox') !== false ) { $agent = 'firefox'; } elseif ( stripos($agent, 'MSIE') !== false ) { $agent = 'ie'; } elseif ( stripos($agent, 'iPad') !== false ) { $agent = 'ipad'; } elseif ( stripos($agent, 'Android') !== false ) { $agent = 'android'; } elseif ( stripos($agent, 'Chrome') !== false ) { $agent = 'chrome'; } elseif ( stripos($agent, 'Safari') !== false ) { $agent = 'safari'; } elseif ( stripos($agent, 'AIR') !== false ) { $agent = 'air'; } elseif ( stripos($agent, 'Fluid') !== false ) { $agent = 'fluid'; } } return $agent; } 

@augustknight: Заметьте, IE11 не отправляет токен «MSIE», я бы предложил добавить совпадение с токеном Trident.

Пример пользовательского агента IE 11:

 Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko 

изменить код:

 <?php public static function getUserAgent() { static $agent = null; if ( empty($agent) ) { $agent = $_SERVER['HTTP_USER_AGENT']; if ( stripos($agent, 'Firefox') !== false ) { $agent = 'firefox'; } elseif ( stripos($agent, 'MSIE') !== false ) { $agent = 'ie'; } elseif ( stripos($agent, 'Trident') !== false ) { $agent = 'ie'; } elseif ( stripos($agent, 'iPad') !== false ) { $agent = 'ipad'; } elseif ( stripos($agent, 'Android') !== false ) { $agent = 'android'; } elseif ( stripos($agent, 'Chrome') !== false ) { $agent = 'chrome'; } elseif ( stripos($agent, 'Safari') !== false ) { $agent = 'safari'; } elseif ( stripos($agent, 'AIR') !== false ) { $agent = 'air'; } elseif ( stripos($agent, 'Fluid') !== false ) { $agent = 'fluid'; } } return $agent; } 

?>

Для достижения этой цели и еще есть встроенная функция PHP: get_browser() .

 $agent = get_browser(); echo $agent->platform; echo $agent->parent; // or $agent->browser . $agent->version