/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

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

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.

Related presentations: Creating mobile apps with PHP & Symfony2 (2013), Responsive Design (2013)

Demo

http://is.gd/mobiletest (redirects to demo.mobiledetect.net) - Point your device browser to this URL.

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.

The script is updated on daily and weekly basis, so make sure you keep following the updates! 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.

Download

Latest releases, Latest dev branch, composer package

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 planning the future releases. 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.

Roadmap and How to contribute to the code
2.9.9 version Dev status Work scheduled on the 2.x.x branch (currently in production).
  1. Clone the repository to your local drive.
  2. Switch to devel branch.
  3. Commit your changes to Mobile_Detect.php.
  4. Commit tests (User-Agent strings) totests/UA_List.inc.php
  5. Run the tests php /path/to/phpunit.phar /path/to/mobiledetectlib/tests/phpunit.xml. Check for errors.
  6. Commit to devel. Push.
  7. The commit will be reviewed and merged into master
3.0.0 version Work scheduled on the 3.x.x branch. 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.
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.

Code examples

<?php
// Include and instantiate the class.
require_once 'Mobile_Detect.php';
$detect = new Mobile_Detect;

// Any mobile device (phones or tablets).
if ( $detect->isMobile() ) {

}

// Any tablet device.
if( $detect->isTablet() ){

}

// Exclude tablets.
if( $detect->isMobile() && !$detect->isTablet() ){

}

// Check for a specific platform with the help of the magic methods:
if( $detect->isiOS() ){

}

if( $detect->isAndroidOS() ){

}

// Alternative method is() for checking specific properties.
// WARNING: this method is in BETA, some keyword properties will change in the future.
$detect->is('Chrome')
$detect->is('iOS')
$detect->is('UC Browser')
// [...]

// Batch mode using setUserAgent():
$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.
// WARNING: this method is in BETA, some keyword properties will change in the future.
$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)
// [...]

3rd party modules / [Submit new](https://github.com/serbanghita/Mobile-Detect/issues/new?title=New%203rd%20party%20module&body=Name, Link and Description of the module.)

Wordpress

Wordpress 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.

<p><a href="http://wordpress.org/plugins/mobble/">mobble</a> - provides mobile related conditional functions for your site. e.g. is_iphone(), is_mobile() and is_tablet(). Made by Scott Evans.</p>

<p><a href="https://github.com/iamspacehead/responsage">Wordpress Responsage</a> - 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>.</p>

<p><a href="http://wordpress.org/plugins/social-popup/">Social PopUP</a> - This plugin will display a popup or splash screen when a new user visit your site showing a Google+, Twitter and Facebook follow links. It uses Mobile_Detect to detect mobile devices.</p>
Drupal

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.

  <p><a href="http://drupal.org/project/context_mobile_detect">Drupal Context Mobile Detect</a> - This is a <code>Drupal context</code> module which integrates Context and PHP Mobile Detect library.
  Created by <a href="http://drupal.org/user/432492">Artem Shymko</a>.</p>

  <p><a href="http://drupal.org/project/mobile_detect">Drupal Mobile Detect</a> - Lightweight mobile detect module for <code>Drupal</code> created by <a href="http://drupal.org/user/325244">Matthew Donadio</a></p>
Joomla

yagendoo Joomla! Mobile Detection Plugin - Lightweight PHP plugin for Joomla! that detects a mobile browser using the Mobile Detect class. Made by yagendoo media.

Magento

Magento - This Magento helper from Optimise Web enables the use of all functions provided by MobileDetect.net. Made by Kathir Vel.

PrestaShop

Free, secure and open source shopping cart platform. Included in the distribution since 1.5.x.

Zend Framework

ZF2 Mobile-Detect - Zend Framework 2 module that provides Mobile-Detect features (Mobile_Detect class as a service, helper for views and plugin controllers). Made by neilime

Symfony

Symfony2 Mobile Detect Bundle - The bundle for detecting 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

EE2 Detect Mobile - Lightweight PHP plugin for EE2 that detects a mobile browser using the Mobile Detect class. Made by Gareth Davies.

Yii Framework

Yii Extension - Mobile detect plugin for Yii framework. Made by Alexey Salnikov.

CakePHP

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

FuelPHP Special Agent is a FuelPHP package which uses php-mobile-detect to determine whether a device is mobile or not. It overrides the Fuelphp Agent class its methods. Made by Robbie Bardjin.
Statamic

Statamic CMS Mobile Detect - plugin. Made by Sergei Filippov.

python

pymobiledetect - Mobile detect python package. Made by Bas van Oostveen.

MemHT

MemHT is a Free PHP CMS and Blog that permit the creation and the management online of websites with few and easy steps. Has the class included in the core.

concrete5

concrete5 is a CMS that is free and open source. The library is included in the core.

engine7

ExEngine 7 PHP Open Source Framework. The Mobile_Detect class is included in the engine.

Zikula

Zikula is a free and open-source Content Management Framework, which allows you to run impressive websites and build powerful online applications. The core uses Mobile-Detect to switch to a special Mobile theme, using jQueryMobile