2013-05-25 2 views
2

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

Что является самым надежным и эффективным методом обнаружения мобильных устройств?

+1

Пожалуйста, будьте вежливы. Его редактирование было прекрасным; см. [соответствующий раздел часто задаваемых вопросов] (http://stackoverflow.com/faq#editing). – Ryan

ответ

5

Вы можете использовать this проект, чтобы сделать это:

if ($detect->isMobile()) { 
    // Any mobile device. 
} 
2

Я предлагаю использования этого класса для хорошего и полного мобильного обнаружения php-mobile-detect

или вы должны фильтровать агент пользователя

+0

Является ли такой большой скрипт необходимым для обнаружения мобильного устройства? Похоже, что их методы зависят от индивидуальных моделей телефонов и их операционных систем, которые постоянно меняются. Я не хочу обновлять свое программное обеспечение каждые 3 дня, когда появятся новые телефоны. –

+0

@CoryNickerson, если вы хотите хороший сценарий, это лучший на самом деле, иначе вы должны все вручную фильтровать пользовательский агент с php – Sam

3

вам могли бы попробовать библиотеки http://detectmobilebrowsers.com/. имеет фрагмент кода для обнаружения мобильных браузеров практически для всего, что вам нужно, чтобы обнаруживать мобильные браузеры.

4

вы можете получить агент сервера и использовать preg_match, чтобы проверить его. , например:

$isMobile=(bool)preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); 

я получил улучшенную версию кода из here:

$isMobile = (bool)preg_match('#\b(ip(hone|od|ad)|android|opera m(ob|in)i|windows (phone|ce)|blackberry|tablet'. 
        '|s(ymbian|eries60|amsung)|p(laybook|alm|rofile/midp|laystation portable)|nokia|fennec|htc[\-_]'. 
        '|mobile|up\.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\b#i', $_SERVER['HTTP_USER_AGENT']); 

, а затем вы можете:

if(isMobile()) 
    header("Location: http://m.site.com/");