/Mobile-Detect

Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets). It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.

Primary LanguagePHPOtherNOASSERTION

Mobile Detect

Motto: "Every business should have a mobile detection script to detect mobile readers."

The lightweight PHP class for detecting mobile devices.

Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets). It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.

You may consider this script as being part of the RESS (Responsive Web Design with Server-Side Component) movement. You can find out more on the topic by reading these articles: Improve Mobile Support With Server-Side-Enhanced Responsive Design and RESS: Responsive Design + Server Side Components.

How reliable is this script?

The script is as reliable as Server-Side detection can be. This is not a replacement for Responsive Web Design (media queries) or other forms of Client-Side detection. Read W3C's Mobile Web Application Best Practices Prefer Server-Side Detection Where Possible section. We're running automated tests to make sure the we don't break the detection every time we update it with new devices and also to avoid regex collisions.

How frequent do you update it?

The script is updated on daily and weekly basis. Sometimes is hard to distinguish between a phone and a tablet, this is why we're constantly researching a lot of mobile vendors sites, checking product codes and new releases.

We are working on a database and API that will automate this process.

Roadmap

Road to 2.9.9 version - stuff that are scheduled on the 2.x.x branch (currently in production).
Road to 3.0.0 version - stuff that are scheduled on the 3.x.x branch.
Current devel status: Devel Build Status

The new 3.0.0 version will feature: compatibility with 2.x, array with devices details (including model name), device/os/browser version, browser grading utility, separate JSON regex.

Need your help

Click here to lend your support to: Funding development of Mobile_Detect 3.0 and make a donation at www.pledgie.com !

I'm currently paying for hosting and spend a lot of my family time to maintain the project and what is to come. I would highly appreciate any money donations that will keep the research going.

Sponsored by the community and by BrowserStack - the complete browser coverage tool (including mobile devices) for testing you web application. Special thanks to Dragos Gavrila who contributed with the logo.

History

The first version of the script was developed by Victor Stanciu in 2010. In December 2011, Serban Ghita updated the first version and fixed all the bugs, then launched the 2.0 version which marks a new mindset and also featuring tablet detection.

Throughout 2012, the script has been updated constantly and we have received tons of feedback and requests. In July 2012 we moved from Google Code to GitHub.com in order to quickly accommodate the frequent updates and to involve more people.

Online demo

http://is.gd/mobiletest - point your device browser to this URL.

Usage and examples

Include and instantiate the class:

<?php
include 'Mobile_Detect.php';
$detect = new Mobile_Detect();

Basic usage, looking for mobile devices or tablets:

<?php
if ($detect->isMobile()) {
    // Any mobile device.
}
<?php
if($detect->isTablet()){
    // Any tablet device.
}

Check for a specific platform with the help of the magic methods:

<?php
if($detect->isiOS()){
    // Code to run for the Apple's iOS platform.
}
<?php
if($detect->isAndroidOS()){
    // Code to run for the Google's Android platform.
}

Other case insensitive available methods are isIphone(), isIpad(), isBlackBerry(), isKindle(), isOpera(), etc. For the full list of available methods check the demo.php file.

Alternative method is() for checking specific properties (in beta):

<?php
$detect->is('Chrome')
$detect->is('iOS')
$detect->is('UC Browser')
[...]

Batch mode using setUserAgent():

<?php
$userAgents = array(
'Mozilla/5.0 (Linux; Android 4.0.4; Desire HD Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19',
'BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103',
[...]
);
foreach($userAgents as $userAgent){
  $detect->setUserAgent($userAgent);
  $isMobile = $detect->isMobile();
  $isTablet = $detect->isTablet();
  // Use the force however you want.
}

Get the version() of components (in beta):

<?php
$detect->version('iPad'); // 4.3 (float)
$detect->version('iPhone') // 3.1 (float)
$detect->version('Android'); // 2.1 (float)
$detect->version('Opera Mini'); // 5.0 (float)
[...]
Projects that are using the class
 <tr>
<td><a href="https://github.com/iamspacehead/responsage">Wordpress Responsage</a></td>
<td>A small <code>WordPress</code> theme plugin that allows you to make your images responsive. Made by <a href="https://github.com/iamspacehead">Adrian Ciaschetti</a>.</td>
<tr>
<td><a href="http://tt-rss.org/redmine/projects/tt-rss/wiki">Tiny Tiny RSS</a></td>
<td>An open source web-based news feed (RSS/Atom) reader and aggregator, designed to allow you to read news from any location, while feeling as close to a real desktop application as possible.</td>
CakePHP

MobileDetect plugin component for CakePHP 2.x. Made by Gregory Gaskill

Magento This Magento helper from Optimise Web enables the use of all functions provided by MobileDetect.net. Made by Kathir Vel.
pymobiledetect Mobile detect python package. Made by Bas van Oostveen.
PrestaShop Free, secure and open source shopping cart platform. Since 1.5.x
JReviews Review Script for Joomla, CCK and PHP Directory Script.
Symfony2 Mobile Detect Bundle Symfony2 bundle for detect mobile devices, manage mobile view and redirect to the mobile and tablet version. Made by Nikolay Ivlev.
Silex Mobile Detect Service Provider Silex service provider to interact with Mobile detect class methods. Made by Lhassan Baazzi.
ExpressionEngine Lightweight PHP plugin for EE2 that detects a mobile browser using the Mobile Detect class. Made by Gareth Davies.
Yii Extension Mobile detect plugin for Yii framework. Made by Alexey Salnikov.
Drupal Mobile Switch The Mobile Switch Drupal module provides a automatic theme switch functionality for mobile devices, detected by Browscap or Mobile Detect. Made by Siegfried Neumann.
Drupal Mobile Detect Lightweight mobile detect module for Drupal created by Matthew Donadio
Drupal Context Mobile Detect This is a Drupal context module which integrates Context and PHP Mobile Detect library. Created by Artem Shymko.
Wordpress Mobile Detect WP Mobile Detect gives you the ability to wrap that infographic in a [notdevice][/notdevice] shortcode so at the server level WordPress will decide to show that content only if the user is NOT on a phone or tablet. Made by Jesse Friedman.
Statamic CMS

Statamic Mobile Detect plugin. Made by Sergei Filippov.

MemHT Portal

MemHT is a Free PHP CMS and Blog that permit the creation and the management online of websites with few and easy steps. It's completelly customizable, expandable and suitable for all needs.

concrete5 CMS concrete5 is a CMS that is free and open source.
bConsole Creates a panel that sits on top of a browser-based project and provides information about the client machine and browser.

Is your project using Mobile_Detect the library? [Let us know](https://github.com/serbanghita/Mobile-Detect/issues/new?title=New%20script%20using%20Mobile_Detect&body=Name and Description of your script.)!