Как я могу по-разному определять телефоны Android и планшеты Android с помощью заголовка пользовательского агента?

Для моего сайта мне нужно иметь возможность определить разницу между посещением планшета Android и телефоном Android. Его необходимо обнаружить до того, как страница будет отправлена ​​пользователю, поэтому использование JavaScript для проверки разрешения экрана невозможно.

На данный момент я использую это для обнаружения устройства Android: stripos($ua, 'android')

Есть ли что-то уникальное в пользовательском агенте планшета?


person Tom    schedule 17.10.2010    source источник
comment
Если вы кодируете свою страницу с помощью семантического HTML и CSS, вам не нужно определять тип устройства перед отправкой страницы.   -  person Lie Ryan    schedule 17.10.2010


Ответы (4)


Вы можете использовать $_SERVER['HTTP_USER_AGENT'] в PHP, а затем нечувствительные к регистру функции eregi для поиска следующего, что предполагает, что разработчик браузера следовал рекомендациям Android по спецификации пользовательского агента:

$ua = $_SERVER['HTTP_USER_AGENT'];
if (eregi('Android', $ua) && eregi('Mobile', $ua)) $platform = "Android Phone";
elseif (eregi('Android', $ua) && !eregi('Mobile', $ua)) $platform = "Android Tablet";

Это не надежно, но это начало.

person user336828    schedule 13.01.2012

Ознакомьтесь с проектом WURFL. Он должен быть в состоянии помочь вам не только в сценарии Android Phone и Android Tablet, но и на других устройствах.

person Faisal Feroz    schedule 17.10.2010

@ Патрик Кершнер, ваш код работает только для семейства продуктов Apple. Каждое устройство Apple отправляет свой собственный UA, но это не относится к устройствам Android. На самом деле автору этого поста нужно знать, является ли Android-устройство планшетом или телефоном без использования Javascript. Код, отправленный пользователем user336828, является отличным обходным решением для этой проблемы, хотя и не на 100% надежным: некоторые устройства-клоны/белая метка/низкое качество могут отправлять одну и ту же строку UA как с планшетов, так и с телефонов, но я думаю, что это должно работать с большинством устройства известных брендов. Я только что протестировал этот код на телефоне и планшете Android, и он работает.

person user4269916    schedule 24.04.2017

if(strstr($_SERVER['HTTP_USER_AGENT'],'iPod') ||   strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPad') || strstr($_SERVER['HTTP_USER_AGENT'],'Android')){ 
    //do something...
}

Работал на меня

person Patrick Kershner    schedule 26.08.2013