8

Mobile Safari is a very capable browser, and it can handle my website as it is perfectly. However, there are a few elements on my page that could be optimized for browsing using this device; such as serving specific thumbnails that are smaller than the desktop counterparts to help fit more content into the screen.

I would like to know how I can detect Mobile Safari (all versions, preferably) using PHP, so then I can serve a) a specific css file and b) different sized image thumbnails.

4

6 回答 6

9

Thanks Joe, I read that page and found the WebKit detection library (in JavaScript). I changed the code to suit my needs.

For anyone that's interested, here's my solution.

<?php

/* detect Mobile Safari */

$browserAsString = $_SERVER['HTTP_USER_AGENT'];

if (strstr($browserAsString, " AppleWebKit/") && strstr($browserAsString, " Mobile/"))
{
    $browserIsMobileSafari = true;
}

?>
于 2008-10-09T11:12:04.130 回答
3
$_SERVER['HTTP_USER_AGENT']  

That will give you the user-agent string back which you can compare to mobile safari.

p.s. http://wurfl.sourceforge.net/ WURFL may help you determine which UAs you want.

于 2008-10-09T10:57:05.517 回答
2

Compare the user agent string with the one of a Safari Mobile uses:

Safari Mobile User Agent String

于 2008-10-09T10:59:50.270 回答
0

I have published a new mode to detect devices in any programming language (JSP, PHP, Perl, Python.....), it's called Apache Mobile Filter is an Apache module (http://modules.apache.org/search.php?id=1787) that detect mobile device and also can adapt the images to the screen size of device.

For more info: http://www.idelfuschini.it/it/apache-mobile-filter-v2x.html

于 2009-11-20T14:27:55.857 回答
0

Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0 that is the browser for the palm Pre, and the word 'Mobile' is not there.

I am working on making my detect work fully with all newer capable browsers. After looking at the mytouch, G1, Palm Pre, droid and others, (but not all) I am now confident this is workable for all new phones:

if(preg_match("/applewebkit/i", $_SERVER['HTTP_USER_AGENT']) && preg_match("/(mobile|pre)/i", $_SERVER['HTTP_USER_AGENT'])) header("Location: http://simplefoodie.com/iphone/?carryover=".urlencode($_SERVER[REQUEST_URI]));

于 2009-12-16T18:47:07.250 回答
0
<?php

// detect Safari only!

$string = $_SERVER['HTTP_USER_AGENT'];

if (strstr($string, " AppleWebKit/") && strstr($string, " Safari/") && !strstr($string, " CriOS"))
    {
        echo 'See in Safari only';
    }

?>   
于 2013-06-17T09:25:08.220 回答