Archive
This post is archived and may contain outdated information. It has been set to 'noindex' and should stop showing up in search results.
PHP: Detect Mobile User Agent Using preg_match Regular Expression
Mar 23, 2012ProgrammingComments (0)
Using PHP, you can change the whole site or redirect users to a different site when they browse from a mobile device, or just change the CSS.

This method relies on the HTTP_USER_AGENT value in the $_SERVER super global. Since this value ultimately comes from the client's browser, it can be spoofed, though don't expect a large portion of visitors to know how.


How to do it


Here is a very basic example of detecting if a user is browsing on a mobile device using PHP preg_match:

$mobile_agents = '!(tablet|pad|mobile|phone|symbian|android|ipod|ios|blackberry|webos)!i';
if (preg_match($mobile_agents, $_SERVER['HTTP_USER_AGENT'])) {
// Mobile!
}

For those unfamiliar with regular expressions, this simply checks to see if any of the values, separated by the "|" (pipe) character, are present in the user agent string. The "i" at the end means it is case-insensitive. You can also use a non-regex function such as strpos if you want.


A more complete example


Since it is possible that HTTP_USER_AGENT doesn't exist, and you may want to tweak various parts of your page when mobile is detected, I suggest doing something like this instead:

$mobile = false;
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$mobile_agents = '!(tablet|pad|mobile|phone|symbian|android|ipod|ios|blackberry|webos)!i';
if (preg_match($mobile_agents, $_SERVER['HTTP_USER_AGENT'])) {
$mobile = true;
}
}


You can also compress it down to one line like this, using a ternary comparison operator:

$mobile = isset($_SERVER['HTTP_USER_AGENT']) && preg_match('!(tablet|pad|mobile|phone|symbian|android|ipod|ios|blackberry|webos)!i', $_SERVER['HTTP_USER_AGENT']) ? true : false;
Comments (0)
Add a Comment


Please review the commenting policy prior to commenting.
No comments yet