Как определить «Google Chrome» в качестве пользовательского агента с помощью PHP?

Мне интересно узнать, является ли пользовательский агент «Chrome» на сервере с использованием PHP. Существует ли надежное регулярное выражение для разбора строки пользовательского агента из заголовка запроса?

На данный момент слишком много браузеров притворяются Chrome, чтобы использовать его популярность, а также бороться с злоупотреблениями браузером для простого совпадения для «Chrome», чтобы быть эффективными больше. Я бы порекомендовал функцию обнаружения функций в будущем, но Chrome (и WebKit / Blink в целом) печально известен тем, что лгал, чтобы также обнаруживать механизмы обнаружения, поэтому даже это не так здорово, как и раньше.

Я могу только рекомендовать оставаться на вершине вещей, сравнивая свои известные строки UA с таковыми из других браузеров через сторонние сайты и создавая шаблоны оттуда. Как вы это делаете, это полностью зависит от самих строк. Просто имейте в виду, что из-за характера браузеров и строк UA никогда не может быть «надежным» регулярным выражением для их сопоставления.

В PHP соответствующий сервер var равен $_SERVER['HTTP_USER_AGENT'] .

Стоит упомянуть, что если вы также хотите включить Chrome для iOS, вам также нужно будет сопоставить с «CriOS»:

 if (strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'CriOS') !== false) { // User agent is Google Chrome } 

Основываясь на ответе @Adams, более точно обнаруживая Google Chrome, исключите некоторые браузеры с «Chrome» в строке пользовательского агента, используя useragentstring.com и udger.com :

 if(preg_match('/(Chrome|CriOS)\//i',$_SERVER['HTTP_USER_AGENT']) && !preg_match('/(Aviator|ChromePlus|coc_|Dragon|Edge|Flock|Iron|Kinza|Maxthon|MxNitro|Nichrome|OPR|Perk|Rockmelt|Seznam|Sleipnir|Spark|UBrowser|Vivaldi|WebExplorer|YaBrowser)/i',$_SERVER['HTTP_USER_AGENT'])){ // Browser might be Google Chrome }