Как определить сервер Mobile Safari с помощью PHP?

Mobile Safari – очень удобный браузер, и он может обрабатывать мой сайт так, как он есть. Однако на моей странице есть несколько элементов, которые можно оптимизировать для просмотра с помощью этого устройства; такие как обслуживание определенных миниатюр, которые меньше, чем у настольных копий, чтобы помочь разместить больше контента на экране.

Я хотел бы знать, как я могу обнаружить Mobile Safari (все версии, желательно) с помощью PHP, поэтому я могу обслуживать a) конкретный файл css и b) миниатюры изображений разного размера.

Сравните строку пользовательского агента с одним из приложений Safari Mobile:

Safari Mobile User Agent String

Спасибо Джо, я прочитал эту страницу и нашел библиотеку обнаружения WebKit (в JavaScript). Я изменил код в соответствии с моими потребностями.

Для всех, кого это интересует, вот мое решение.

<?php /* detect Mobile Safari */ $browserAsString = $_SERVER['HTTP_USER_AGENT']; if (strstr($browserAsString, " AppleWebKit/") && strstr($browserAsString, " Mobile/")) { $browserIsMobileSafari = true; } ?> 
 $_SERVER['HTTP_USER_AGENT'] 

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

ps http://wurfl.sourceforge.net/ WURFL может помочь вам определить, какие UA вы хотите.

Я опубликовал новый режим обнаружения устройств на любом языке программирования (JSP, PHP, Perl, Python …..), он называется Apache Mobile Filter – это модуль Apache ( http://modules.apache.org/search. php? id = 1787 ), которые обнаруживают мобильное устройство, а также могут адаптировать изображения к размеру экрана устройства.

Для получения дополнительной информации: http://www.idelfuschini.it/it/apache-mobile-filter-v2x.html

Mozilla / 5.0 (webOS / 1.0; U; en-US) AppleWebKit / 525.27.1 (KHTML, например, Gecko) Версия / 1.0 Safari / 525.27.1 Pre / 1.0, который является браузером для ладони Pre, и слово «Mobile» ' не там.

Я работаю над тем, чтобы моя работа обнаружения полностью работала со всеми новыми браузерами. Посмотрев на mytouch, G1, Palm Pre, droid и другие, (но не все), я уверен, что это работает для всех новых телефонов:

if (preg_match ("/ applewebkit / i", $ _SERVER ['HTTP_USER_AGENT']) && preg_match ("/ (mobile | pre) / i", $ _SERVER ['HTTP_USER_AGENT'])) header ("Местоположение: http: / /simplefoodie.com/iphone/?carryover= ".urlencode ($ _ SERVER [REQUEST_URI]));

 <?php // detect Safari only! $string = $_SERVER['HTTP_USER_AGENT']; if (strstr($string, " AppleWebKit/") && strstr($string, " Safari/") && !strstr($string, " CriOS")) { echo 'See in Safari only'; } ?>