ZenphotoCMS 1.6.1

Mobile_Detect
in package

Mobile Detect Library 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.

Homepage: http://mobiledetect.net GitHub: https://github.com/serbanghita/Mobile-Detect README: https://github.com/serbanghita/Mobile-Detect/blob/master/README.md CONTRIBUTING: https://github.com/serbanghita/Mobile-Detect/blob/master/docs/CONTRIBUTING.md KNOWN LIMITATIONS: https://github.com/serbanghita/Mobile-Detect/blob/master/docs/KNOWN_LIMITATIONS.md EXAMPLES: https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples

Tags
license

https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE

author

Serban Ghita serbanghita@gmail.com

author

Nick Ilyin nick.ilyin@gmail.com Original author: Victor Stanciu vic.stanciu@gmail.com

version
2.8.37

Auto-generated isXXXX() magic methods. php -a examples/dump_magic_methods.php

Table of Contents

DETECTION_TYPE_EXTENDED  = 'extended'
Extended detection type.
DETECTION_TYPE_MOBILE  = 'mobile'
Mobile detection type.
MOBILE_GRADE_A  = 'A'
Top-level device.
MOBILE_GRADE_B  = 'B'
Mid-level device.
MOBILE_GRADE_C  = 'C'
Low-level device.
VER  = '([\\w._\\+]+)'
A frequently used regular expression to extract version #s.
VERSION  = '2.8.37'
Stores the version number of the current release.
VERSION_TYPE_FLOAT  = 'float'
A type for the version() method indicating a float return value.
VERSION_TYPE_STRING  = 'text'
A type for the version() method indicating a string return value.
$browsers  : array<string|int, mixed>
List of mobile User Agents.
$cache  : array<string|int, mixed>
A cache for resolved matches
$cloudfrontHeaders  : array<string|int, mixed>
CloudFront headers. E.g. CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer & CloudFront-Is-Tablet-Viewer.
$detectionType  : string
The detection type, using self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED.
$httpHeaders  : array<string|int, mixed>
HTTP headers in the PHP-flavor. So HTTP_USER_AGENT and SERVER_SOFTWARE.
$matchesArray  : string
The matches extracted from the regex expression.
$matchingRegex  : string
The matching Regex.
$mobileHeaders  : array<string|int, mixed>
HTTP headers that trigger the 'isMobile' detection to be true.
$operatingSystems  : array<string|int, mixed>
List of mobile Operating Systems.
$phoneDevices  : array<string|int, mixed>
List of mobile devices (phones).
$properties  : array<string|int, mixed>
The individual segments that could exist in a User-Agent string. VER refers to the regular expression defined in the constant self::VER.
$tabletDevices  : array<string|int, mixed>
List of tablet devices.
$uaHttpHeaders  : array<string|int, mixed>
All possible HTTP headers that represent the User-Agent string.
$userAgent  : string
The User-Agent HTTP header is stored in here.
$utilities  : array<string|int, mixed>
Utilities.
__call()  : mixed
Magic overloading method.
__construct()  : mixed
Construct an instance of this class.
checkHttpHeadersForMobile()  : bool
Check the HTTP headers for signs of mobile.
getBrowsers()  : array<string|int, mixed>
Retrieve the list of known browsers. Specifically, the user agents.
getCfHeaders()  : array<string|int, mixed>
Retrieves the cloudfront headers.
getHttpHeader()  : string|null
Retrieves a particular header. If it doesn't exist, no exception/error is caused.
getHttpHeaders()  : array<string|int, mixed>
Retrieves the HTTP headers.
getMatchesArray()  : mixed
getMatchingRegex()  : mixed
getMobileDetectionRules()  : array<string|int, mixed>
Method gets the mobile detection rules. This method is used for the magic methods $detect->is*().
getMobileDetectionRulesExtended()  : array<string|int, mixed>
Method gets the mobile detection rules + utilities.
getMobileHeaders()  : mixed
getOperatingSystems()  : array<string|int, mixed>
Retrieve the list of mobile operating systems.
getPhoneDevices()  : array<string|int, mixed>
Retrieve the list of known phone devices.
getProperties()  : array<string|int, mixed>
Get the properties array.
getRules()  : array<string|int, mixed>
Retrieve the current set of rules.
getScriptVersion()  : string
Get the current script version.
getTabletDevices()  : array<string|int, mixed>
Retrieve the list of known tablet devices.
getUaHttpHeaders()  : array<string|int, mixed>
Get all possible HTTP headers that can contain the User-Agent string.
getUserAgent()  : string|null
Retrieve the User-Agent.
getUserAgents()  : array<string|int, mixed>
Alias for getBrowsers() method.
getUtilities()  : array<string|int, mixed>
Retrieve the list of known utilities.
is()  : bool|int|null
This method checks for a certain property in the userAgent.
isAcerTablet()  : bool
isAdvanTablet()  : bool
isAinolTablet()  : bool
isAlcatel()  : bool
isAllFineTablet()  : bool
isAllViewTablet()  : bool
isAmoi()  : bool
isAMPETablet()  : bool
isAndroidOS()  : bool
isAocTablet()  : bool
isArchosTablet()  : bool
isArnovaTablet()  : bool
isAsus()  : bool
isAsusTablet()  : bool
isAudioSonicTablet()  : bool
isbadaOS()  : bool
isbaiduboxapp()  : bool
isbaidubrowser()  : bool
isBlackBerry()  : bool
isBlackBerryOS()  : bool
isBlackBerryTablet()  : bool
isBlaupunktTablet()  : bool
isBlazer()  : bool
isBolt()  : bool
isBot()  : bool
isbqTablet()  : bool
isBREWOS()  : bool
isBronchoTablet()  : bool
isCaptivaTablet()  : bool
isCelkonTablet()  : bool
isChangJiaTablet()  : bool
isChrome()  : bool
isCobyTablet()  : bool
isConcordeTablet()  : bool
isConsole()  : bool
isCrestaTablet()  : bool
isCubeTablet()  : bool
isDanewTablet()  : bool
isDanyTechTablet()  : bool
isDell()  : bool
isDellTablet()  : bool
isDesktopMode()  : bool
isDigmaTablet()  : bool
isDiigoBrowser()  : bool
isDolfin()  : bool
isDPSTablet()  : bool
isEbodaTablet()  : bool
isECSTablet()  : bool
isEdge()  : bool
isEssentielBTablet()  : bool
isEvolioTablet()  : bool
isFirefox()  : bool
isFly()  : bool
isFlyTablet()  : bool
isFujitsuTablet()  : bool
isFX2Tablet()  : bool
isGalapadTablet()  : bool
isGenericBrowser()  : bool
isGenericPhone()  : bool
isGenericTablet()  : bool
isGoCleverTablet()  : bool
isGoogleTablet()  : bool
isGUTablet()  : bool
isHCLTablet()  : bool
isHisenseTablet()  : bool
isHPTablet()  : bool
isHTC()  : bool
isHTCtablet()  : bool
isHuaweiTablet()  : bool
isHudl()  : bool
isIconbitTablet()  : bool
isIE()  : bool
isiJoyTablet()  : bool
isiMobile()  : bool
isiMobileTablet()  : bool
isINQ()  : bool
isIntensoTablet()  : bool
isiOS()  : bool
isiPad()  : bool
isiPadOS()  : bool
isiPhone()  : bool
isIRUTablet()  : bool
isJavaOS()  : bool
isJaytechTablet()  : bool
isJXDTablet()  : bool
isKarbonnTablet()  : bool
isKindle()  : bool
isKoboTablet()  : bool
isKocasoTablet()  : bool
isLavaTablet()  : bool
isLeaderTablet()  : bool
isLenovoTablet()  : bool
isLG()  : bool
isLGTablet()  : bool
isMaemoOS()  : bool
isMediacomTablet()  : bool
isMediatekTablet()  : bool
isMedionTablet()  : bool
isMeeGoOS()  : bool
isMegafonTablet()  : bool
isMercury()  : bool
isMicromax()  : bool
isMicromaxTablet()  : bool
isMIDTablet()  : bool
isMiTablet()  : bool
isMobile()  : bool
Check if the device is mobile.
isMobileBot()  : bool
isModecomTablet()  : bool
isMotorola()  : bool
isMotorolaTablet()  : bool
isMpmanTablet()  : bool
isMSITablet()  : bool
isNabiTablet()  : bool
isNecTablet()  : bool
isNetFront()  : bool
isNexoTablet()  : bool
isNexus()  : bool
isNexusTablet()  : bool
isNibiruTablet()  : bool
isNintendo()  : bool
isNokiaLumia()  : bool
isNokiaLumiaTablet()  : bool
isNookTablet()  : bool
isObigoBrowser()  : bool
isOdysTablet()  : bool
isOndaTablet()  : bool
isOnePlus()  : bool
isOpera()  : bool
isOvermaxTablet()  : bool
isPaleMoon()  : bool
isPalm()  : bool
isPalmOS()  : bool
isPantech()  : bool
isPantechTablet()  : bool
isPhilipsTablet()  : bool
isPixel()  : bool
isPlaystationTablet()  : bool
isPocketBookTablet()  : bool
isPointOfViewTablet()  : bool
isPositivoTablet()  : bool
isPrestigioTablet()  : bool
isPROSCANTablet()  : bool
isPyleAudioTablet()  : bool
isRockChipTablet()  : bool
isRossMoorTablet()  : bool
isSafari()  : bool
isSailfishOS()  : bool
isSamsung()  : bool
isSamsungTablet()  : bool
isSimValley()  : bool
isSkkTablet()  : bool
isSkyfire()  : bool
isSMiTTablet()  : bool
isSony()  : bool
isSonyTablet()  : bool
isStorexTablet()  : bool
isSurfaceTablet()  : bool
isSymbianOS()  : bool
isTablet()  : bool
Check if the device is a tablet.
isTeaShark()  : bool
isTeclastTablet()  : bool
isTecnoTablet()  : bool
isTelstraTablet()  : bool
isTexetTablet()  : bool
isTolinoTablet()  : bool
isToshibaTablet()  : bool
isTrekstorTablet()  : bool
isTV()  : bool
isUbislateTablet()  : bool
isUCBrowser()  : bool
isVerizonTablet()  : bool
isVersusTablet()  : bool
isVertu()  : bool
isViewsonicTablet()  : bool
isVistureTablet()  : bool
isVodafoneTablet()  : bool
isVoninoTablet()  : bool
isWatch()  : bool
isWebKit()  : bool
iswebOS()  : bool
isWeChat()  : bool
isWiko()  : bool
isWindowsMobileOS()  : bool
isWindowsPhoneOS()  : bool
isWolderTablet()  : bool
isWolfgang()  : bool
isXiaomi()  : bool
isXoroTablet()  : bool
isYarvikTablet()  : bool
isYONESTablet()  : bool
isZyncTablet()  : bool
match()  : bool
Some detection rules are relative (not standard), because of the diversity of devices, vendors and their conventions in representing the User-Agent or the HTTP headers.
mobileGrade()  : string
Retrieve the mobile grading, using self::MOBILE_GRADE_* constants.
prepareVersionNo()  : float
Prepare the version number.
setCfHeaders()  : bool
Set CloudFront headers http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-device
setDetectionType()  : mixed
Set the detection type. Must be one of self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED. Otherwise, nothing is set.
setHttpHeaders()  : mixed
Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers.
setUserAgent()  : string|null
Set the User-Agent to be used.
version()  : string|float
Check the version of the given property in the User-Agent.
matchDetectionRulesAgainstUA()  : bool
Find a detection rule that matches the current User-agent.
matchUAAgainstKey()  : bool
Search for a certain key in the rules array.
prepareUserAgent()  : string

Constants

DETECTION_TYPE_EXTENDED

Extended detection type.

public mixed DETECTION_TYPE_EXTENDED = 'extended'
Tags
deprecated

since version 2.6.9

DETECTION_TYPE_MOBILE

Mobile detection type.

public mixed DETECTION_TYPE_MOBILE = 'mobile'
Tags
deprecated

since version 2.6.9

MOBILE_GRADE_A

Top-level device.

public mixed MOBILE_GRADE_A = 'A'

MOBILE_GRADE_B

Mid-level device.

public mixed MOBILE_GRADE_B = 'B'

MOBILE_GRADE_C

Low-level device.

public mixed MOBILE_GRADE_C = 'C'

VER

A frequently used regular expression to extract version #s.

public mixed VER = '([\\w._\\+]+)'
Tags
deprecated

since version 2.6.9

VERSION

Stores the version number of the current release.

public mixed VERSION = '2.8.37'

VERSION_TYPE_FLOAT

A type for the version() method indicating a float return value.

public mixed VERSION_TYPE_FLOAT = 'float'

VERSION_TYPE_STRING

A type for the version() method indicating a string return value.

public mixed VERSION_TYPE_STRING = 'text'

Properties

$browsers

List of mobile User Agents.

protected static array<string|int, mixed> $browsers = array( //'Vivaldi' => 'Vivaldi', // @reference: https://developers.google.com/chrome/mobile/docs/user-agent 'Chrome' => '\\bCrMo\\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?', 'Dolfin' => '\\bDolfin\\b', 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+', 'Skyfire' => 'Skyfire', // Added "Edge on iOS" https://github.com/serbanghita/Mobile-Detect/issues/764 'Edge' => '\\bEdgiOS\\b|Mobile Safari/[.0-9]* Edge', 'IE' => 'IEMobile|MSIEMobile', // |Trident/[.0-9]+ 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS', 'Bolt' => 'bolt', 'TeaShark' => 'teashark', 'Blazer' => 'Blazer', // @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3 // Excluded "Edge on iOS" https://github.com/serbanghita/Mobile-Detect/issues/764 'Safari' => 'Version((?!\\bEdgiOS\\b).)*Mobile.*Safari|Safari.*Mobile|MobileSafari', // http://en.wikipedia.org/wiki/Midori_(web_browser) //'Midori' => 'midori', //'Tizen' => 'Tizen', 'WeChat' => '\\bMicroMessenger\\b', 'UCBrowser' => 'UC.*Browser|UCWEB', 'baiduboxapp' => 'baiduboxapp', 'baidubrowser' => 'baidubrowser', // https://github.com/serbanghita/Mobile-Detect/issues/7 'DiigoBrowser' => 'DiigoBrowser', // http://www.puffinbrowser.com/index.php // https://github.com/serbanghita/Mobile-Detect/issues/752 // 'Puffin' => 'Puffin', // http://mercury-browser.com/index.html 'Mercury' => '\\bMercury\\b', // http://en.wikipedia.org/wiki/Obigo_Browser 'ObigoBrowser' => 'Obigo', // http://en.wikipedia.org/wiki/NetFront 'NetFront' => 'NF-Browser', // @reference: http://en.wikipedia.org/wiki/Minimo // http://en.wikipedia.org/wiki/Vision_Mobile_Browser 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger', // @reference: https://en.wikipedia.org/wiki/Pale_Moon_(web_browser) 'PaleMoon' => 'Android.*PaleMoon|Mobile.*PaleMoon', )

IMPORTANT: This is a list of only mobile browsers. Mobile Detect 2.x supports only mobile browsers, it was never designed to detect all browsers. The change will come in 2017 in the 3.x release for PHP7.

$cache

A cache for resolved matches

protected array<string|int, mixed> $cache = array()

$cloudfrontHeaders

CloudFront headers. E.g. CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer & CloudFront-Is-Tablet-Viewer.

protected array<string|int, mixed> $cloudfrontHeaders = array()

$detectionType

The detection type, using self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED.

protected string $detectionType = self::DETECTION_TYPE_MOBILE
Tags
deprecated

since version 2.6.9

$httpHeaders

HTTP headers in the PHP-flavor. So HTTP_USER_AGENT and SERVER_SOFTWARE.

protected array<string|int, mixed> $httpHeaders = array()

$matchesArray

The matches extracted from the regex expression.

protected string $matchesArray = \null

This is good for debug.

$matchingRegex

The matching Regex.

protected string $matchingRegex = \null

This is good for debug.

$mobileHeaders

HTTP headers that trigger the 'isMobile' detection to be true.

protected static array<string|int, mixed> $mobileHeaders = array( 'HTTP_ACCEPT' => array('matches' => array( // Opera Mini; @reference: http://dev.opera.com/articles/view/opera-binary-markup-language/ 'application/x-obml2d', // BlackBerry devices. 'application/vnd.rim.html', 'text/vnd.wap.wml', 'application/vnd.wap.xhtml+xml', )), 'HTTP_X_WAP_PROFILE' => \null, 'HTTP_X_WAP_CLIENTID' => \null, 'HTTP_WAP_CONNECTION' => \null, 'HTTP_PROFILE' => \null, // Reported by Opera on Nokia devices (eg. C3). 'HTTP_X_OPERAMINI_PHONE_UA' => \null, 'HTTP_X_NOKIA_GATEWAY_ID' => \null, 'HTTP_X_ORANGE_ID' => \null, 'HTTP_X_VODAFONE_3GPDPCONTEXT' => \null, 'HTTP_X_HUAWEI_USERID' => \null, // Reported by Windows Smartphones. 'HTTP_UA_OS' => \null, // Reported by Verizon, Vodafone proxy system. 'HTTP_X_MOBILE_GATEWAY' => \null, // Seen this on HTC Sensation. SensationXE_Beats_Z715e. 'HTTP_X_ATT_DEVICEID' => \null, // Seen this on a HTC. 'HTTP_UA_CPU' => array('matches' => array('ARM')), )

$operatingSystems

List of mobile Operating Systems.

protected static array<string|int, mixed> $operatingSystems = array( 'AndroidOS' => 'Android', 'BlackBerryOS' => 'blackberry|\\bBB10\\b|rim tablet os', 'PalmOS' => 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino', 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b', // @reference: http://en.wikipedia.org/wiki/Windows_Mobile 'WindowsMobileOS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;', // @reference: http://en.wikipedia.org/wiki/Windows_Phone // http://wifeng.cn/?r=blog&a=view&id=106 // http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx // http://msdn.microsoft.com/library/ms537503.aspx // https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx 'WindowsPhoneOS' => 'Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;', 'iOS' => '\\biPhone.*Mobile|\\biPod|\\biPad|AppleCoreMedia', // https://en.wikipedia.org/wiki/IPadOS 'iPadOS' => 'CPU OS 13', // @reference https://en.m.wikipedia.org/wiki/Sailfish_OS // https://sailfishos.org/ 'SailfishOS' => 'Sailfish', // http://en.wikipedia.org/wiki/MeeGo // @todo: research MeeGo in UAs 'MeeGoOS' => 'MeeGo', // http://en.wikipedia.org/wiki/Maemo // @todo: research Maemo in UAs 'MaemoOS' => 'Maemo', 'JavaOS' => 'J2ME/|\\bMIDP\\b|\\bCLDC\\b', // '|Java/' produces bug #135 'webOS' => 'webOS|hpwOS', 'badaOS' => '\\bBada\\b', 'BREWOS' => 'BREW', )

$phoneDevices

List of mobile devices (phones).

protected static array<string|int, mixed> $phoneDevices = array( 'iPhone' => '\\biPhone\\b|\\biPod\\b', // |\biTunes 'BlackBerry' => 'BlackBerry|\\bBB10\\b|rim[0-9]+|\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\b-[0-9]+', 'Pixel' => '; \\bPixel\\b', 'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel', 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 5X|Nexus 6', // @todo: Is 'Dell Streak' a tablet or a phone? ;) 'Dell' => 'Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b', 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052', 'Samsung' => '\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F|SM-G610F|SM-G981B|SM-G892A|SM-A530F', 'LG' => '\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710', 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533|SOV34|601SO|F8332', 'Asus' => 'Asus.*Galaxy|PadFone.*Mobile', 'Xiaomi' => '^(?!.*\\bx11\\b).*xiaomi.*$|POCOPHONE F1|MI 8|Redmi Note 9S|Redmi Note 5A Prime|N2G47H|M2001J2G|M2001J2I|M1805E10A|M2004J11G|M1902F1G|M2002J9G|M2004J19G|M2003J6A1G', 'NokiaLumia' => 'Lumia [0-9]{3,4}', // http://www.micromaxinfo.com/mobiles/smartphones // Added because the codes might conflict with Acer Tablets. 'Micromax' => 'Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b', // @todo Complete the regex. 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;) // http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH) // Most of the VEGA devices are legacy. PANTECH seem to be newer devices based on Android. 'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790', // http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones. 'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250', // http://fr.wikomobile.com 'Wiko' => 'KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM', 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)', // Added simvalley mobile just for fun. They have some interesting devices. // http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html 'SimValley' => '\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b', // Wolfgang - a brand that is sold by Aldi supermarkets. // http://www.wolfgangmobile.com/ 'Wolfgang' => 'AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q', 'Alcatel' => 'Alcatel', 'Nintendo' => 'Nintendo (3DS|Switch)', // http://en.wikipedia.org/wiki/Amoi 'Amoi' => 'Amoi', // http://en.wikipedia.org/wiki/INQ 'INQ' => 'INQ', 'OnePlus' => 'ONEPLUS', // @Tapatalk is a mobile app; http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser', )

$properties

The individual segments that could exist in a User-Agent string. VER refers to the regular expression defined in the constant self::VER.

protected static array<string|int, mixed> $properties = array( // Build 'Mobile' => 'Mobile/[VER]', 'Build' => 'Build/[VER]', 'Version' => 'Version/[VER]', 'VendorID' => 'VendorID/[VER]', // Devices 'iPad' => 'iPad.*CPU[a-z ]+[VER]', 'iPhone' => 'iPhone.*CPU[a-z ]+[VER]', 'iPod' => 'iPod.*CPU[a-z ]+[VER]', //'BlackBerry' => array('BlackBerry[VER]', 'BlackBerry [VER];'), 'Kindle' => 'Kindle/[VER]', // Browser 'Chrome' => array('Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'), 'Coast' => array('Coast/[VER]'), 'Dolfin' => 'Dolfin/[VER]', // @reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox 'Firefox' => array('Firefox/[VER]', 'FxiOS/[VER]'), 'Fennec' => 'Fennec/[VER]', // http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx // https://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx 'Edge' => 'Edge/[VER]', 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'Trident/[0-9.]+;.*rv:[VER]'), // http://en.wikipedia.org/wiki/NetFront 'NetFront' => 'NetFront/[VER]', 'NokiaBrowser' => 'NokiaBrowser/[VER]', 'Opera' => array(' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]'), 'Opera Mini' => 'Opera Mini/[VER]', 'Opera Mobi' => 'Version/[VER]', 'UCBrowser' => array('UCWEB[VER]', 'UC.*Browser/[VER]'), 'MQQBrowser' => 'MQQBrowser/[VER]', 'MicroMessenger' => 'MicroMessenger/[VER]', 'baiduboxapp' => 'baiduboxapp/[VER]', 'baidubrowser' => 'baidubrowser/[VER]', 'SamsungBrowser' => 'SamsungBrowser/[VER]', 'Iron' => 'Iron/[VER]', // @note: Safari 7534.48.3 is actually Version 5.1. // @note: On BlackBerry the Version is overwriten by the OS. 'Safari' => array('Version/[VER]', 'Safari/[VER]'), 'Skyfire' => 'Skyfire/[VER]', 'Tizen' => 'Tizen/[VER]', 'Webkit' => 'webkit[ /][VER]', 'PaleMoon' => 'PaleMoon/[VER]', 'SailfishBrowser' => 'SailfishBrowser/[VER]', // Engine 'Gecko' => 'Gecko/[VER]', 'Trident' => 'Trident/[VER]', 'Presto' => 'Presto/[VER]', 'Goanna' => 'Goanna/[VER]', // OS 'iOS' => ' \\bi?OS\\b [VER][ ;]{1}', 'Android' => 'Android [VER]', 'Sailfish' => 'Sailfish [VER]', 'BlackBerry' => array('BlackBerry[\\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'), 'BREW' => 'BREW [VER]', 'Java' => 'Java/[VER]', // @reference: http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/08/29/introducing-the-ie9-on-windows-phone-mango-user-agent-string.aspx // @reference: http://en.wikipedia.org/wiki/Windows_NT#Releases 'Windows Phone OS' => array('Windows Phone OS [VER]', 'Windows Phone [VER]'), 'Windows Phone' => 'Windows Phone [VER]', 'Windows CE' => 'Windows CE/[VER]', // http://social.msdn.microsoft.com/Forums/en-US/windowsdeveloperpreviewgeneral/thread/6be392da-4d2f-41b4-8354-8dcee20c85cd 'Windows NT' => 'Windows NT [VER]', 'Symbian' => array('SymbianOS/[VER]', 'Symbian/[VER]'), 'webOS' => array('webOS/[VER]', 'hpwOS/[VER];'), )

$tabletDevices

List of tablet devices.

protected static array<string|int, mixed> $tabletDevices = array( // @todo: check for mobile friendly emails topic. 'iPad' => 'iPad|iPad.*Mobile', // Removed |^.*Android.*Nexus(?!(?:Mobile).)*$ // @see #442 // @todo Merge NexusTablet into GoogleTablet. 'NexusTablet' => 'Android.*Nexus[\\s]+(7|9|10)', // https://en.wikipedia.org/wiki/Pixel_C 'GoogleTablet' => 'Android.*Pixel C', 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V|SM-P610|SM-T290|SM-T515|SM-T590|SM-T595|SM-T725|SM-T817P|SM-P585N0|SM-T395|SM-T295|SM-T865|SM-P610N|SM-P615|SM-T970|SM-T380|SM-T5950|SM-T905|SM-T231|SM-T500|SM-T860', // SCH-P709|SCH-P729|SM-T2558|GT-I9205 - Samsung Mega - treat them like a regular phone. // http://docs.aws.amazon.com/silk/latest/developerguide/user-agent.html 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)', // Only the Surface tablets with Windows RT are considered mobile. // http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)', // http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT 'HPTablet' => 'HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10', // Watch out for PadFone, see #132. // http://www.asus.com/de/Tablets_Mobile/Memo_Pad_Products/ 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b', 'BlackBerryTablet' => 'PlayBook|RIM Tablet', 'HTCtablet' => 'HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410', 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617', 'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2', // http://www.acer.ro/ac/ro/RO/content/drivers // http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer) // http://us.acer.com/ac/en/US/content/group/tablets // http://www.acer.de/ac/de/DE/content/models/tablets/ // Can conflict with Micromax and Motorola phones codes. 'AcerTablet' => 'Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20\\b|\\bA3-A30|A3-A40', // http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/ // http://us.toshiba.com/tablets/tablet-finder // http://www.toshiba.co.jp/regza/tablet/ 'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO', // http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html // http://www.lg.com/us/tablets 'LGTablet' => '\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b', 'FujitsuTablet' => 'Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b', // Prestigio Tablets http://www.prestigio.com/support 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002', // http://support.lenovo.com/en_GB/downloads/default.page?# 'LenovoTablet' => 'Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X|TB-X704F|TB-X104F|TB3-X70F|TB-X705F|TB-8504F|TB3-X70L|TB3-710F|TB-X704L', // http://www.dell.com/support/home/us/en/04/Products/tab_mob/tablets 'DellTablet' => 'Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7', // http://www.yarvik.com/en/matrix/tablets/ 'YarvikTablet' => 'Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b', 'MedionTablet' => 'Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB', 'ArnovaTablet' => '97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2', // http://www.intenso.de/kategorie_en.php?kategorie=33 // @todo: http://www.nbhkdz.com/read/b8e64202f92a2df129126bff.html - investigate 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004', // IRU.ru Tablets http://www.iru.ru/catalog/soho/planetable/ 'IRUTablet' => 'M702pro', 'MegafonTablet' => 'MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b', // http://www.e-boda.ro/tablete-pc.html 'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)', // http://www.allview.ro/produse/droseries/lista-tablete-pc/ 'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)', // http://wiki.archosfans.com/index.php?title=Main_Page // @note Rewrite the regex format after we add more UAs. 'ArchosTablet' => '\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b', // http://www.ainol.com/plugin.php?identifier=ainol&module=product 'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark', 'NokiaLumiaTablet' => 'Lumia 2520', // @todo: inspect http://esupport.sony.com/US/p/select-system.pl?DIRECTOR=DRIVER // Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser // http://www.sony.jp/support/tablet/ 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712', // http://www.support.philips.com/support/catalog/worldproducts.jsp?userLanguage=en&userCountry=cn&categoryid=3G_LTE_TABLET_SU_CN_CARE&title=3G%20tablets%20/%20LTE%20range&_dyncharset=UTF-8 'PhilipsTablet' => '\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b', // db + http://www.cube-tablet.com/buy-products.html 'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT', // http://www.cobyusa.com/?p=pcat&pcat_id=3001 'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010', // http://www.match.net.cn/products.asp 'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10', // http://www.msi.com/support // @todo Research the Windows Tablets. 'MSITablet' => 'MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b', // @todo http://www.kyoceramobile.com/support/drivers/ // 'KyoceraTablet' => null, // @todo http://intexuae.com/index.php/category/mobile-devices/tablets-products/ // 'IntextTablet' => null, // http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets) // http://www.imp3.net/14/show.php?itemid=20454 'SMiTTablet' => 'Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)', // http://www.rock-chips.com/index.php?do=prod&pid=2 'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A', // http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/ 'FlyTablet' => 'IQ310|Fly Vision', // http://www.bqreaders.com/gb/tablets-prices-sale.html 'bqTablet' => 'Android.*(bq)?.*\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\b|Maxwell.*Lite|Maxwell.*Plus', // http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290 // http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets) 'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19', // Nec or Medias Tab 'NecTablet' => '\\bN-06D|\\bN-08D', // Pantech Tablets: http://www.pantechusa.com/phones/ 'PantechTablet' => 'Pantech.*P4100', // Broncho Tablets: http://www.broncho.cn/ (hard to find) 'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)', // http://versusuk.com/support.html 'VersusTablet' => 'TOUCHPAD.*[78910]|\\bTOUCHTAB\\b', // http://www.zync.in/index.php/our-products/tablet-phablets 'ZyncTablet' => 'z1000|Z99 2G|z930|z990|z909|Z919|z900', // Removed "z999" because of https://github.com/serbanghita/Mobile-Detect/issues/717 // http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/ 'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA', // https://www.nabitablet.com/ 'NabiTablet' => 'Android.*\\bNabi', 'KoboTablet' => 'Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build', // French Danew Tablets http://www.danew.com/produits-tablette.php 'DanewTablet' => 'DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b', // Texet Tablets and Readers http://www.texet.ru/tablet/ 'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE', // Avoid detecting 'PLAYSTATION 3' as mobile. 'PlaystationTablet' => 'Playstation.*(Portable|Vita)', // http://www.trekstor.de/surftabs.html 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab', // http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets 'PyleAudioTablet' => '\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b', // http://www.advandigital.com/index.php?link=content-product&jns=JP001 // because of the short codenames we have to include whitespaces to reduce the possible conflicts. 'AdvanTablet' => 'Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ', // http://www.danytech.com/category/tablet-pc 'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1', // http://www.galapad.net/product.html ; https://github.com/serbanghita/Mobile-Detect/issues/761 'GalapadTablet' => 'Android [0-9.]+; [a-z-]+; \\bG1\\b', // http://www.micromaxinfo.com/tablet/funbook 'MicromaxTablet' => 'Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b', // http://www.karbonnmobiles.com/products_tablet.php 'KarbonnTablet' => 'Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b', // http://www.myallfine.com/Products.asp 'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide', // http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr= 'PROSCANTablet' => '\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b', // http://www.yonesnav.com/products/products.php 'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026', // http://www.cjshowroom.com/eproducts.aspx?classcode=004001001 // China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html) 'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503', // http://www.gloryunion.cn/products.asp // http://www.allwinnertech.com/en/apply/mobile.html // http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB) // @todo: Softwiner tablets? // aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions. 'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026', // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G // http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118 'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10', // http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/ // @todo: add more tests. 'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027', // http://hclmetablet.com/India/index.php 'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync', // http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html 'DPSTablet' => 'DPS Dream 9|DPS Dual 7', // http://www.visture.com/index.asp 'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10', // http://www.mijncresta.nl/tablet 'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989', // MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309 'MediatekTablet' => '\\bMT8125|MT8389|MT8135|MT8377\\b', // Concorde tab 'ConcordeTablet' => 'Concorde([ ]+)?Tab|ConCorde ReadMan', // GoClever Tablets - http://www.goclever.com/uk/products,c1/tablet,c5/ 'GoCleverTablet' => 'GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042', // Modecom Tablets - http://www.modecom.eu/tablets/portal/ 'ModecomTablet' => 'FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003', // Vonino Tablets 'VoninoTablet' => '\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b', // ECS Tablets - http://www.ecs.com.tw/ECSWebSite/Product/Product_Tablet_List.aspx?CategoryID=14&MenuID=107&childid=M_107&LanID=0 'ECSTablet' => 'V07OT2|TM105A|S10OT1|TR10CS1', // Storex Tablets - http://storex.fr/espace_client/support.html // @note: no need to add all the tablet codes since they are guided by the first regex. 'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab', // Generic Vodafone tablets. 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400', // French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb // Aka: http://www.essentielb.fr/ 'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2', // Ross & Moor - http://ross-moor.ru/ 'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711', // i-mobile http://product.i-mobilephone.com/Mobile_Device 'iMobileTablet' => 'i-mobile i-note', // http://www.tolino.de/de/vergleichen/ 'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine', // AudioSonic - a Kmart brand // http://www.kmart.com.au/webapp/wcs/stores/servlet/Search?langId=-1&storeId=10701&catalogId=10001&categoryId=193001&pageSize=72&currentPage=1&searchCategory=193001%2b4294965664&sortBy=p_MaxPrice%7c1 'AudioSonicTablet' => '\\bC-22Q|T7-QC|T-17B|T-17P\\b', // AMPE Tablets - http://www.ampe.com.my/product-category/tablets/ // @todo: add them gradually to avoid conflicts. 'AMPETablet' => 'Android.* A78 ', // Skk Mobile - http://skkmobile.com.ph/product_tablets.php 'SkkTablet' => 'Android.* (SKYPAD|PHOENIX|CYCLOPS)', // Tecno Mobile (only tablet) - http://www.tecno-mobile.com/index.php/product?filterby=smart&list_order=all&page=1 'TecnoTablet' => 'TECNO P9|TECNO DP8D', // JXD (consoles & tablets) - http://jxd.hk/products.asp?selectclassid=009008&clsid=3 'JXDTablet' => 'Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b', // i-Joy tablets - http://www.i-joy.es/en/cat/products/tablets/ 'iJoyTablet' => 'Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)', // http://www.intracon.eu/tablet 'FX2Tablet' => 'FX2 PAD7|FX2 PAD10', // http://www.xoro.de/produkte/ // @note: Might be the same brand with 'Simply tablets' 'XoroTablet' => 'KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151', // http://www1.viewsonic.com/products/computing/tablets/ 'ViewsonicTablet' => 'ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a', // https://www.verizonwireless.com/tablets/verizon/ 'VerizonTablet' => 'QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1', // http://www.odys.de/web/internet-tablet_en.html 'OdysTablet' => 'LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10', // http://www.captiva-power.de/products.html#tablets-en 'CaptivaTablet' => 'CAPTIVA PAD', // IconBIT - http://www.iconbit.com/products/tablets/ 'IconbitTablet' => 'NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S', // http://www.teclast.com/topic.php?channelID=70&topicID=140&pid=63 'TeclastTablet' => 'T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi', // Onda - http://www.onda-tablet.com/buy-android-onda.html?dir=desc&limit=all&order=price 'OndaTablet' => '\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+|V10 \\b4G\\b', 'JaytechTablet' => 'TPC-PA762', 'BlaupunktTablet' => 'Endeavour 800NG|Endeavour 1010', // http://www.digma.ru/support/download/ // @todo: Ebooks also (if requested) 'DigmaTablet' => '\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b', // http://www.evolioshop.com/ro/tablete-pc.html // http://www.evolio.ro/support/downloads_static.html?cat=2 // @todo: Research some more 'EvolioTablet' => 'ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b', // @todo http://www.lavamobiles.com/tablets-data-cards 'LavaTablet' => 'QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b', // http://www.breezetablet.com/ 'AocTablet' => 'MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712', // http://www.mpmaneurope.com/en/products/internet-tablets-14/android-tablets-14/ 'MpmanTablet' => 'MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010', // https://www.celkonmobiles.com/?_a=categoryphones&sid=2 'CelkonTablet' => 'CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b', // http://www.wolderelectronics.com/productos/manuales-y-guias-rapidas/categoria-2-miTab 'WolderTablet' => 'miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b', 'MediacomTablet' => 'M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA', // http://www.mi.com/en 'MiTablet' => '\\bMI PAD\\b|\\bHM NOTE 1W\\b', // http://www.nbru.cn/index.html 'NibiruTablet' => 'Nibiru M1|Nibiru Jupiter One', // http://navroad.com/products/produkty/tablety/ // http://navroad.com/products/produkty/tablety/ 'NexoTablet' => 'NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI', // http://leader-online.com/new_site/product-category/tablets/ // http://www.leader-online.net.au/List/Tablet 'LeaderTablet' => 'TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100', // http://www.datawind.com/ubislate/ 'UbislateTablet' => 'UbiSlate[\\s]?7C', // http://www.pocketbook-int.com/ru/support 'PocketBookTablet' => 'Pocketbook', // http://www.kocaso.com/product_tablet.html 'KocasoTablet' => '\\b(TB-1207)\\b', // http://global.hisense.com/product/asia/tablet/Sero7/201412/t20141215_91832.htm 'HisenseTablet' => '\\b(F5281|E2371)\\b', // http://www.tesco.com/direct/hudl/ 'Hudl' => 'Hudl HT7S3|Hudl 2', // http://www.telstra.com.au/home-phone/thub-2/ 'TelstraTablet' => 'T-Hub2', 'GenericTablet' => 'Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107', )

$uaHttpHeaders

All possible HTTP headers that represent the User-Agent string.

protected static array<string|int, mixed> $uaHttpHeaders = array( // The default User-Agent string. 'HTTP_USER_AGENT', // Header can occur on devices using Opera Mini. 'HTTP_X_OPERAMINI_PHONE_UA', // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/ 'HTTP_X_DEVICE_USER_AGENT', 'HTTP_X_ORIGINAL_USER_AGENT', 'HTTP_X_SKYFIRE_PHONE', 'HTTP_X_BOLT_PHONE_UA', 'HTTP_DEVICE_STOCK_UA', 'HTTP_X_UCBROWSER_DEVICE_UA', )

$userAgent

The User-Agent HTTP header is stored in here.

protected string $userAgent = \null

$utilities

Utilities.

protected static array<string|int, mixed> $utilities = array( // Experimental. When a mobile device wants to switch to 'Desktop Mode'. // http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/ // https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011 // https://developers.facebook.com/docs/sharing/webmasters/crawler/ 'Bot' => 'Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp|AspiegelBot', 'MobileBot' => 'Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2', 'DesktopMode' => 'WPDesktop', 'TV' => 'SonyDTV|HbbTV', // experimental 'WebKit' => '(webkit)[ /]([\\w.]+)', // @todo: Include JXD consoles. 'Console' => '\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\b', 'Watch' => 'SM-V700', )

Methods

__call()

Magic overloading method.

public __call(string $name, array<string|int, mixed> $arguments) : mixed
Parameters
$name : string
$arguments : array<string|int, mixed>
Tags
throws
BadMethodCallException

when the method doesn't exist and doesn't start with 'is'

Return values
mixed

__construct()

Construct an instance of this class.

public __construct([array<string|int, mixed> $headers = null ][, string $userAgent = null ]) : mixed
Parameters
$headers : array<string|int, mixed> = null

Specify the headers as injection. Should be PHP _SERVER flavored. If left empty, will use the global SERVER['HTTP*'] vars instead.

$userAgent : string = null

Inject the User-Agent header. If null, will use HTTP_USER_AGENT from the $headers array instead.

Return values
mixed

checkHttpHeadersForMobile()

Check the HTTP headers for signs of mobile.

public checkHttpHeadersForMobile() : bool

This is the fastest mobile check possible; it's used inside isMobile() method.

Return values
bool

getBrowsers()

Retrieve the list of known browsers. Specifically, the user agents.

public static getBrowsers() : array<string|int, mixed>
Return values
array<string|int, mixed>

List of browsers / user agents.

getCfHeaders()

Retrieves the cloudfront headers.

public getCfHeaders() : array<string|int, mixed>
Return values
array<string|int, mixed>

getHttpHeader()

Retrieves a particular header. If it doesn't exist, no exception/error is caused.

public getHttpHeader(string $header) : string|null

Simply null is returned.

Parameters
$header : string

The name of the header to retrieve. Can be HTTP compliant such as "User-Agent" or "X-Device-User-Agent" or can be php-esque with the all-caps, HTTP_ prefixed, underscore seperated awesomeness.

Return values
string|null

The value of the header.

getHttpHeaders()

Retrieves the HTTP headers.

public getHttpHeaders() : array<string|int, mixed>
Return values
array<string|int, mixed>

getMatchesArray()

public getMatchesArray() : mixed
Return values
mixed

getMatchingRegex()

public getMatchingRegex() : mixed
Return values
mixed

getMobileDetectionRules()

Method gets the mobile detection rules. This method is used for the magic methods $detect->is*().

public static getMobileDetectionRules() : array<string|int, mixed>
Tags
deprecated

since version 2.6.9

Return values
array<string|int, mixed>

All the rules (but not extended).

getMobileDetectionRulesExtended()

Method gets the mobile detection rules + utilities.

public getMobileDetectionRulesExtended() : array<string|int, mixed>

The reason this is separate is because utilities rules don't necessary imply mobile. This method is used inside the new $detect->is('stuff') method.

Tags
deprecated

since version 2.6.9

Return values
array<string|int, mixed>

All the rules + extended.

getMobileHeaders()

public getMobileHeaders() : mixed
Return values
mixed

getOperatingSystems()

Retrieve the list of mobile operating systems.

public static getOperatingSystems() : array<string|int, mixed>
Return values
array<string|int, mixed>

The list of mobile operating systems.

getPhoneDevices()

Retrieve the list of known phone devices.

public static getPhoneDevices() : array<string|int, mixed>
Return values
array<string|int, mixed>

List of phone devices.

getProperties()

Get the properties array.

public static getProperties() : array<string|int, mixed>
Return values
array<string|int, mixed>

getRules()

Retrieve the current set of rules.

public getRules() : array<string|int, mixed>
Tags
deprecated

since version 2.6.9

Return values
array<string|int, mixed>

getScriptVersion()

Get the current script version.

public static getScriptVersion() : string

This is useful for the demo.php file, so people can check on what version they are testing for mobile devices.

Return values
string

The version number in semantic version format.

getTabletDevices()

Retrieve the list of known tablet devices.

public static getTabletDevices() : array<string|int, mixed>
Return values
array<string|int, mixed>

List of tablet devices.

getUaHttpHeaders()

Get all possible HTTP headers that can contain the User-Agent string.

public getUaHttpHeaders() : array<string|int, mixed>
Return values
array<string|int, mixed>

List of HTTP headers.

getUserAgent()

Retrieve the User-Agent.

public getUserAgent() : string|null
Return values
string|null

The user agent if it's set.

getUserAgents()

Alias for getBrowsers() method.

public static getUserAgents() : array<string|int, mixed>
Return values
array<string|int, mixed>

List of user agents.

getUtilities()

Retrieve the list of known utilities.

public static getUtilities() : array<string|int, mixed>
Return values
array<string|int, mixed>

List of utilities.

is()

This method checks for a certain property in the userAgent.

public is(string $key[, string $userAgent = null ][, string $httpHeaders = null ]) : bool|int|null
Parameters
$key : string
$userAgent : string = null

deprecated

$httpHeaders : string = null

deprecated

Tags
todo:

The httpHeaders part is not yet used.

Return values
bool|int|null

isAcerTablet()

public isAcerTablet() : bool
Return values
bool

isAdvanTablet()

public isAdvanTablet() : bool
Return values
bool

isAinolTablet()

public isAinolTablet() : bool
Return values
bool

isAllFineTablet()

public isAllFineTablet() : bool
Return values
bool

isAllViewTablet()

public isAllViewTablet() : bool
Return values
bool

isAMPETablet()

public isAMPETablet() : bool
Return values
bool

isAndroidOS()

public isAndroidOS() : bool
Return values
bool

isAocTablet()

public isAocTablet() : bool
Return values
bool

isArchosTablet()

public isArchosTablet() : bool
Return values
bool

isArnovaTablet()

public isArnovaTablet() : bool
Return values
bool

isAsusTablet()

public isAsusTablet() : bool
Return values
bool

isAudioSonicTablet()

public isAudioSonicTablet() : bool
Return values
bool

isbaiduboxapp()

public isbaiduboxapp() : bool
Return values
bool

isbaidubrowser()

public isbaidubrowser() : bool
Return values
bool

isBlackBerry()

public isBlackBerry() : bool
Return values
bool

isBlackBerryOS()

public isBlackBerryOS() : bool
Return values
bool

isBlackBerryTablet()

public isBlackBerryTablet() : bool
Return values
bool

isBlaupunktTablet()

public isBlaupunktTablet() : bool
Return values
bool

isbqTablet()

public isbqTablet() : bool
Return values
bool

isBronchoTablet()

public isBronchoTablet() : bool
Return values
bool

isCaptivaTablet()

public isCaptivaTablet() : bool
Return values
bool

isCelkonTablet()

public isCelkonTablet() : bool
Return values
bool

isChangJiaTablet()

public isChangJiaTablet() : bool
Return values
bool

isCobyTablet()

public isCobyTablet() : bool
Return values
bool

isConcordeTablet()

public isConcordeTablet() : bool
Return values
bool

isCrestaTablet()

public isCrestaTablet() : bool
Return values
bool

isCubeTablet()

public isCubeTablet() : bool
Return values
bool

isDanewTablet()

public isDanewTablet() : bool
Return values
bool

isDanyTechTablet()

public isDanyTechTablet() : bool
Return values
bool

isDellTablet()

public isDellTablet() : bool
Return values
bool

isDesktopMode()

public isDesktopMode() : bool
Return values
bool

isDigmaTablet()

public isDigmaTablet() : bool
Return values
bool

isDiigoBrowser()

public isDiigoBrowser() : bool
Return values
bool

isDPSTablet()

public isDPSTablet() : bool
Return values
bool

isEbodaTablet()

public isEbodaTablet() : bool
Return values
bool

isECSTablet()

public isECSTablet() : bool
Return values
bool

isEssentielBTablet()

public isEssentielBTablet() : bool
Return values
bool

isEvolioTablet()

public isEvolioTablet() : bool
Return values
bool

isFlyTablet()

public isFlyTablet() : bool
Return values
bool

isFujitsuTablet()

public isFujitsuTablet() : bool
Return values
bool

isFX2Tablet()

public isFX2Tablet() : bool
Return values
bool

isGalapadTablet()

public isGalapadTablet() : bool
Return values
bool

isGenericBrowser()

public isGenericBrowser() : bool
Return values
bool

isGenericPhone()

public isGenericPhone() : bool
Return values
bool

isGenericTablet()

public isGenericTablet() : bool
Return values
bool

isGoCleverTablet()

public isGoCleverTablet() : bool
Return values
bool

isGoogleTablet()

public isGoogleTablet() : bool
Return values
bool

isGUTablet()

public isGUTablet() : bool
Return values
bool

isHCLTablet()

public isHCLTablet() : bool
Return values
bool

isHisenseTablet()

public isHisenseTablet() : bool
Return values
bool

isHPTablet()

public isHPTablet() : bool
Return values
bool

isHTCtablet()

public isHTCtablet() : bool
Return values
bool

isHuaweiTablet()

public isHuaweiTablet() : bool
Return values
bool

isIconbitTablet()

public isIconbitTablet() : bool
Return values
bool

isiJoyTablet()

public isiJoyTablet() : bool
Return values
bool

isiMobileTablet()

public isiMobileTablet() : bool
Return values
bool

isIntensoTablet()

public isIntensoTablet() : bool
Return values
bool

isIRUTablet()

public isIRUTablet() : bool
Return values
bool

isJaytechTablet()

public isJaytechTablet() : bool
Return values
bool

isJXDTablet()

public isJXDTablet() : bool
Return values
bool

isKarbonnTablet()

public isKarbonnTablet() : bool
Return values
bool

isKoboTablet()

public isKoboTablet() : bool
Return values
bool

isKocasoTablet()

public isKocasoTablet() : bool
Return values
bool

isLavaTablet()

public isLavaTablet() : bool
Return values
bool

isLeaderTablet()

public isLeaderTablet() : bool
Return values
bool

isLenovoTablet()

public isLenovoTablet() : bool
Return values
bool

isLGTablet()

public isLGTablet() : bool
Return values
bool

isMediacomTablet()

public isMediacomTablet() : bool
Return values
bool

isMediatekTablet()

public isMediatekTablet() : bool
Return values
bool

isMedionTablet()

public isMedionTablet() : bool
Return values
bool

isMegafonTablet()

public isMegafonTablet() : bool
Return values
bool

isMicromax()

public isMicromax() : bool
Return values
bool

isMicromaxTablet()

public isMicromaxTablet() : bool
Return values
bool

isMIDTablet()

public isMIDTablet() : bool
Return values
bool

isMiTablet()

public isMiTablet() : bool
Return values
bool

isMobile()

Check if the device is mobile.

public isMobile([null $userAgent = null ][, null $httpHeaders = null ]) : bool

Returns true if any type of mobile device detected, including special ones

Parameters
$userAgent : null = null

deprecated

$httpHeaders : null = null

deprecated

Return values
bool

isMobileBot()

public isMobileBot() : bool
Return values
bool

isModecomTablet()

public isModecomTablet() : bool
Return values
bool

isMotorola()

public isMotorola() : bool
Return values
bool

isMotorolaTablet()

public isMotorolaTablet() : bool
Return values
bool

isMpmanTablet()

public isMpmanTablet() : bool
Return values
bool

isMSITablet()

public isMSITablet() : bool
Return values
bool

isNabiTablet()

public isNabiTablet() : bool
Return values
bool

isNecTablet()

public isNecTablet() : bool
Return values
bool

isNetFront()

public isNetFront() : bool
Return values
bool

isNexoTablet()

public isNexoTablet() : bool
Return values
bool

isNexusTablet()

public isNexusTablet() : bool
Return values
bool

isNibiruTablet()

public isNibiruTablet() : bool
Return values
bool

isNintendo()

public isNintendo() : bool
Return values
bool

isNokiaLumia()

public isNokiaLumia() : bool
Return values
bool

isNokiaLumiaTablet()

public isNokiaLumiaTablet() : bool
Return values
bool

isNookTablet()

public isNookTablet() : bool
Return values
bool

isObigoBrowser()

public isObigoBrowser() : bool
Return values
bool

isOdysTablet()

public isOdysTablet() : bool
Return values
bool

isOndaTablet()

public isOndaTablet() : bool
Return values
bool

isOvermaxTablet()

public isOvermaxTablet() : bool
Return values
bool

isPaleMoon()

public isPaleMoon() : bool
Return values
bool

isPantechTablet()

public isPantechTablet() : bool
Return values
bool

isPhilipsTablet()

public isPhilipsTablet() : bool
Return values
bool

isPlaystationTablet()

public isPlaystationTablet() : bool
Return values
bool

isPocketBookTablet()

public isPocketBookTablet() : bool
Return values
bool

isPointOfViewTablet()

public isPointOfViewTablet() : bool
Return values
bool

isPositivoTablet()

public isPositivoTablet() : bool
Return values
bool

isPrestigioTablet()

public isPrestigioTablet() : bool
Return values
bool

isPROSCANTablet()

public isPROSCANTablet() : bool
Return values
bool

isPyleAudioTablet()

public isPyleAudioTablet() : bool
Return values
bool

isRockChipTablet()

public isRockChipTablet() : bool
Return values
bool

isRossMoorTablet()

public isRossMoorTablet() : bool
Return values
bool

isSailfishOS()

public isSailfishOS() : bool
Return values
bool

isSamsungTablet()

public isSamsungTablet() : bool
Return values
bool

isSimValley()

public isSimValley() : bool
Return values
bool

isSkkTablet()

public isSkkTablet() : bool
Return values
bool

isSMiTTablet()

public isSMiTTablet() : bool
Return values
bool

isSonyTablet()

public isSonyTablet() : bool
Return values
bool

isStorexTablet()

public isStorexTablet() : bool
Return values
bool

isSurfaceTablet()

public isSurfaceTablet() : bool
Return values
bool

isSymbianOS()

public isSymbianOS() : bool
Return values
bool

isTablet()

Check if the device is a tablet.

public isTablet([string $userAgent = null ][, array<string|int, mixed> $httpHeaders = null ]) : bool

Return true if any type of tablet device is detected.

Parameters
$userAgent : string = null

deprecated

$httpHeaders : array<string|int, mixed> = null

deprecated

Return values
bool

isTeaShark()

public isTeaShark() : bool
Return values
bool

isTeclastTablet()

public isTeclastTablet() : bool
Return values
bool

isTecnoTablet()

public isTecnoTablet() : bool
Return values
bool

isTelstraTablet()

public isTelstraTablet() : bool
Return values
bool

isTexetTablet()

public isTexetTablet() : bool
Return values
bool

isTolinoTablet()

public isTolinoTablet() : bool
Return values
bool

isToshibaTablet()

public isToshibaTablet() : bool
Return values
bool

isTrekstorTablet()

public isTrekstorTablet() : bool
Return values
bool

isUbislateTablet()

public isUbislateTablet() : bool
Return values
bool

isUCBrowser()

public isUCBrowser() : bool
Return values
bool

isVerizonTablet()

public isVerizonTablet() : bool
Return values
bool

isVersusTablet()

public isVersusTablet() : bool
Return values
bool

isViewsonicTablet()

public isViewsonicTablet() : bool
Return values
bool

isVistureTablet()

public isVistureTablet() : bool
Return values
bool

isVodafoneTablet()

public isVodafoneTablet() : bool
Return values
bool

isVoninoTablet()

public isVoninoTablet() : bool
Return values
bool

isWindowsMobileOS()

public isWindowsMobileOS() : bool
Return values
bool

isWindowsPhoneOS()

public isWindowsPhoneOS() : bool
Return values
bool

isWolderTablet()

public isWolderTablet() : bool
Return values
bool

isWolfgang()

public isWolfgang() : bool
Return values
bool

isXoroTablet()

public isXoroTablet() : bool
Return values
bool

isYarvikTablet()

public isYarvikTablet() : bool
Return values
bool

isYONESTablet()

public isYONESTablet() : bool
Return values
bool

isZyncTablet()

public isZyncTablet() : bool
Return values
bool

match()

Some detection rules are relative (not standard), because of the diversity of devices, vendors and their conventions in representing the User-Agent or the HTTP headers.

public match( $regex[, string $userAgent = null ]) : bool

This method will be used to check custom regexes against the User-Agent string.

Parameters
$regex :
$userAgent : string = null
Tags
todo:

search in the HTTP headers too.

Return values
bool

mobileGrade()

Retrieve the mobile grading, using self::MOBILE_GRADE_* constants.

public mobileGrade() : string
Return values
string

One of the self::MOBILE_GRADE_* constants.

prepareVersionNo()

Prepare the version number.

public prepareVersionNo(string $ver) : float
Parameters
$ver : string

The string version, like "2.6.21.2152";

Tags
todo

Remove the error supression from str_replace() call.

Return values
float

setCfHeaders()

Set CloudFront headers http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-device

public setCfHeaders([array<string|int, mixed> $cfHeaders = null ]) : bool
Parameters
$cfHeaders : array<string|int, mixed> = null

List of HTTP headers

Return values
bool

If there were CloudFront headers to be set

setDetectionType()

Set the detection type. Must be one of self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED. Otherwise, nothing is set.

public setDetectionType([string $type = null ]) : mixed
Parameters
$type : string = null

The type. Must be a self::DETECTION_TYPE_* constant. The default parameter is null which will default to self::DETECTION_TYPE_MOBILE.

Tags
deprecated

since version 2.6.9

Return values
mixed

setHttpHeaders()

Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers.

public setHttpHeaders([array<string|int, mixed> $httpHeaders = null ]) : mixed
Parameters
$httpHeaders : array<string|int, mixed> = null

The headers to set. If null, then using PHP's _SERVER to extract the headers. The default null is left for backwards compatibility.

Return values
mixed

setUserAgent()

Set the User-Agent to be used.

public setUserAgent([string $userAgent = null ]) : string|null
Parameters
$userAgent : string = null

The user agent string to set.

Return values
string|null

version()

Check the version of the given property in the User-Agent.

public version(string $propertyName[, string $type = self::VERSION_TYPE_STRING ]) : string|float

Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)

Parameters
$propertyName : string

The name of the property. See self::getProperties() array keys for all possible properties.

$type : string = self::VERSION_TYPE_STRING

Either self::VERSION_TYPE_STRING to get a string value or self::VERSION_TYPE_FLOAT indicating a float value. This parameter is optional and defaults to self::VERSION_TYPE_STRING. Passing an invalid parameter will default to the this type as well.

Return values
string|float

The version of the property we are trying to extract.

matchDetectionRulesAgainstUA()

Find a detection rule that matches the current User-agent.

protected matchDetectionRulesAgainstUA([null $userAgent = null ]) : bool
Parameters
$userAgent : null = null

deprecated

Return values
bool

matchUAAgainstKey()

Search for a certain key in the rules array.

protected matchUAAgainstKey(string $key) : bool

If the key is found then try to match the corresponding regex against the User-Agent.

Parameters
$key : string
Return values
bool

prepareUserAgent()

private prepareUserAgent(string $userAgent) : string
Parameters
$userAgent : string
Return values
string

Search results