Hur man kan känna igen en mobil klient

När vi gör en hemsida så kan vi av olika anledningar vilja veta om det är en mobil klient som besöker hemsidan. Presenterar i detta inlägget i dess mest simpla form hur vi kan få den informationen med hjälp av antingen Javascript, PHP eller Apaches .htaccess fil.

Javascript

navigator.userAgent.toLowerCase().indexOf( 'android' )    > 0
navigator.userAgent.toLowerCase().indexOf( 'blackberry' ) > 0
navigator.userAgent.toLowerCase().indexOf( 'iphone' )     > 0
navigator.userAgent.toLowerCase().indexOf( 'ipod' )       > 0
navigator.userAgent.toLowerCase().indexOf( 'ipad' )       > 0
navigator.userAgent.toLowerCase().indexOf( 'webos' )      > 0

Ett exempel på hur man kan använda sig av ett reguljärt uttryck:

navigator.userAgent.match( /android/i )

PHP

strstr( strtolower( $_SERVER[ 'HTTP_USER_AGENT' ] ), 'android' )
strstr( strtolower( $_SERVER[ 'HTTP_USER_AGENT' ] ), 'blackberry' )
strstr( strtolower( $_SERVER[ 'HTTP_USER_AGENT' ] ), 'iphone' )
strstr( strtolower( $_SERVER[ 'HTTP_USER_AGENT' ] ), 'ipod' )
strstr( strtolower( $_SERVER[ 'HTTP_USER_AGENT' ] ), 'ipad' )
strstr( strtolower( $_SERVER[ 'HTTP_USER_AGENT' ] ), 'webos' )

Ett alternativt exempel för att använda reguljära uttryck istället:

preg_match( '/android/i', $_SERVER[ 'HTTP_USER_AGENT' ] )

Det finns också en klass jag hittat på Google code värt att nämna i sammanhanget:
http://code.google.com/p/php-mobile-detect/

Apache

RewriteCond %{HTTP_USER_AGENT} ^.*android.*$    [NC]
RewriteCond %{HTTP_USER_AGENT} ^.*blackberry.*$ [NC]
RewriteCond %{HTTP_USER_AGENT} ^.*iphone.*$     [NC]
RewriteCond %{HTTP_USER_AGENT} ^.*ipod.*$       [NC]
RewriteCond %{HTTP_USER_AGENT} ^.*ipad.*$       [NC]
RewriteCond %{HTTP_USER_AGENT} ^.*webos.*$      [NC]

Länkar

http://scottrockers.com/
http://cardonadesigns.com/
http://stackoverflow.com/
http://detectmobilebrowsers.com/