Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/advanced.../lib/mobilede.../mobilede...
File: Mobile_Detect.php
// http://www.bqreaders.com/gb/tablets-prices-sale.html
[500] Fix | Delete
'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',
[501] Fix | Delete
// http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290
[502] Fix | Delete
// http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets)
[503] Fix | Delete
'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|KOB2-L09|BG2-U01|BG2-W09|BG2-U03',
[504] Fix | Delete
// Nec or Medias Tab
[505] Fix | Delete
'NecTablet' => '\bN-06D|\bN-08D',
[506] Fix | Delete
// Pantech Tablets: http://www.pantechusa.com/phones/
[507] Fix | Delete
'PantechTablet' => 'Pantech.*P4100',
[508] Fix | Delete
// Broncho Tablets: http://www.broncho.cn/ (hard to find)
[509] Fix | Delete
'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)',
[510] Fix | Delete
// http://versusuk.com/support.html
[511] Fix | Delete
'VersusTablet' => 'TOUCHPAD.*[78910]|\AdvancedAds\bTOUCHTAB\b',
[512] Fix | Delete
// http://www.zync.in/index.php/our-products/tablet-phablets
[513] Fix | Delete
'ZyncTablet' => 'z1000|Z99 2G|z930|z990|z909|Z919|z900', // Removed "z999" because of https://github.com/serbanghita/Mobile-Detect/issues/717
[514] Fix | Delete
// http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/
[515] Fix | Delete
'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA',
[516] Fix | Delete
// https://www.nabitablet.com/
[517] Fix | Delete
'NabiTablet' => 'Android.*\bNabi',
[518] Fix | Delete
'KoboTablet' => 'Kobo Touch|\AdvancedAds\bK080\b|\AdvancedAds\bVox\b Build|\AdvancedAds\bArc\b Build',
[519] Fix | Delete
// French Danew Tablets http://www.danew.com/produits-tablette.php
[520] Fix | Delete
'DanewTablet' => 'DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b',
[521] Fix | Delete
// Texet Tablets and Readers http://www.texet.ru/tablet/
[522] Fix | Delete
'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',
[523] Fix | Delete
// Avoid detecting 'PLAYSTATION 3' as mobile.
[524] Fix | Delete
'PlaystationTablet' => 'Playstation.*(Portable|Vita)',
[525] Fix | Delete
// http://www.trekstor.de/surftabs.html
[526] Fix | Delete
'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab',
[527] Fix | Delete
// http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets
[528] Fix | Delete
'PyleAudioTablet' => '\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b',
[529] Fix | Delete
// http://www.advandigital.com/index.php?link=content-product&jns=JP001
[530] Fix | Delete
// because of the short codenames we have to include whitespaces to reduce the possible conflicts.
[531] Fix | Delete
'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 ',
[532] Fix | Delete
// http://www.danytech.com/category/tablet-pc
[533] Fix | Delete
'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',
[534] Fix | Delete
// http://www.galapad.net/product.html ; https://github.com/serbanghita/Mobile-Detect/issues/761
[535] Fix | Delete
'GalapadTablet' => 'Android [0-9.]+; [a-z-]+; \AdvancedAds\bG1\b',
[536] Fix | Delete
// http://www.micromaxinfo.com/tablet/funbook
[537] Fix | Delete
'MicromaxTablet' => 'Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b',
[538] Fix | Delete
// http://www.karbonnmobiles.com/products_tablet.php
[539] Fix | Delete
'KarbonnTablet' => 'Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b',
[540] Fix | Delete
// http://www.myallfine.com/Products.asp
[541] Fix | Delete
'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide',
[542] Fix | Delete
// http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr=
[543] Fix | Delete
'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',
[544] Fix | Delete
// http://www.yonesnav.com/products/products.php
[545] Fix | Delete
'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026',
[546] Fix | Delete
// http://www.cjshowroom.com/eproducts.aspx?classcode=004001001
[547] Fix | Delete
// China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html)
[548] Fix | Delete
'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',
[549] Fix | Delete
// http://www.gloryunion.cn/products.asp
[550] Fix | Delete
// http://www.allwinnertech.com/en/apply/mobile.html
[551] Fix | Delete
// http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB)
[552] Fix | Delete
// @todo: Softwiner tablets?
[553] Fix | Delete
// aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions.
[554] Fix | Delete
'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
[555] Fix | Delete
// http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118
[556] Fix | Delete
'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',
[557] Fix | Delete
// http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/
[558] Fix | Delete
// @todo: add more tests.
[559] Fix | Delete
'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027',
[560] Fix | Delete
// http://hclmetablet.com/India/index.php
[561] Fix | Delete
'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',
[562] Fix | Delete
// http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html
[563] Fix | Delete
'DPSTablet' => 'DPS Dream 9|DPS Dual 7',
[564] Fix | Delete
// http://www.visture.com/index.asp
[565] Fix | Delete
'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10',
[566] Fix | Delete
// http://www.mijncresta.nl/tablet
[567] Fix | Delete
'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989',
[568] Fix | Delete
// MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309
[569] Fix | Delete
'MediatekTablet' => '\bMT8125|MT8389|MT8135|MT8377\b',
[570] Fix | Delete
// Concorde tab
[571] Fix | Delete
'ConcordeTablet' => 'Concorde([ ]+)?Tab|ConCorde ReadMan',
[572] Fix | Delete
// GoClever Tablets - http://www.goclever.com/uk/products,c1/tablet,c5/
[573] Fix | Delete
'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',
[574] Fix | Delete
// Modecom Tablets - http://www.modecom.eu/tablets/portal/
[575] Fix | Delete
'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',
[576] Fix | Delete
// Vonino Tablets
[577] Fix | Delete
'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.*\AdvancedAds\bQ8\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\b',
[578] Fix | Delete
// ECS Tablets - http://www.ecs.com.tw/ECSWebSite/Product/Product_Tablet_List.aspx?CategoryID=14&MenuID=107&childid=M_107&LanID=0
[579] Fix | Delete
'ECSTablet' => 'V07OT2|TM105A|S10OT1|TR10CS1',
[580] Fix | Delete
// Storex Tablets - http://storex.fr/espace_client/support.html
[581] Fix | Delete
// @note: no need to add all the tablet codes since they are guided by the first regex.
[582] Fix | Delete
'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab',
[583] Fix | Delete
// Generic Vodafone tablets.
[584] Fix | Delete
'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400',
[585] Fix | Delete
// French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb
[586] Fix | Delete
// Aka: http://www.essentielb.fr/
[587] Fix | Delete
'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2',
[588] Fix | Delete
// Ross & Moor - http://ross-moor.ru/
[589] Fix | Delete
'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711',
[590] Fix | Delete
// i-mobile http://product.i-mobilephone.com/Mobile_Device
[591] Fix | Delete
'iMobileTablet' => 'i-mobile i-note',
[592] Fix | Delete
// http://www.tolino.de/de/vergleichen/
[593] Fix | Delete
'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine',
[594] Fix | Delete
// AudioSonic - a Kmart brand
[595] Fix | Delete
// 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
[596] Fix | Delete
'AudioSonicTablet' => '\bC-22Q|T7-QC|T-17B|T-17P\b',
[597] Fix | Delete
// AMPE Tablets - http://www.ampe.com.my/product-category/tablets/
[598] Fix | Delete
// @todo: add them gradually to avoid conflicts.
[599] Fix | Delete
'AMPETablet' => 'Android.* A78 ',
[600] Fix | Delete
// Skk Mobile - http://skkmobile.com.ph/product_tablets.php
[601] Fix | Delete
'SkkTablet' => 'Android.* (SKYPAD|PHOENIX|CYCLOPS)',
[602] Fix | Delete
// Tecno Mobile (only tablet) - http://www.tecno-mobile.com/index.php/product?filterby=smart&list_order=all&page=1
[603] Fix | Delete
'TecnoTablet' => 'TECNO P9|TECNO DP8D',
[604] Fix | Delete
// JXD (consoles & tablets) - http://jxd.hk/products.asp?selectclassid=009008&clsid=3
[605] Fix | Delete
'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',
[606] Fix | Delete
// i-Joy tablets - http://www.i-joy.es/en/cat/products/tablets/
[607] Fix | Delete
'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)',
[608] Fix | Delete
// http://www.intracon.eu/tablet
[609] Fix | Delete
'FX2Tablet' => 'FX2 PAD7|FX2 PAD10',
[610] Fix | Delete
// http://www.xoro.de/produkte/
[611] Fix | Delete
// @note: Might be the same brand with 'Simply tablets'
[612] Fix | Delete
'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',
[613] Fix | Delete
// http://www1.viewsonic.com/products/computing/tablets/
[614] Fix | Delete
'ViewsonicTablet' => 'ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a',
[615] Fix | Delete
// https://www.verizonwireless.com/tablets/verizon/
[616] Fix | Delete
'VerizonTablet' => 'QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1',
[617] Fix | Delete
// http://www.odys.de/web/internet-tablet_en.html
[618] Fix | Delete
'OdysTablet' => 'LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\AdvancedAds\bXELIO\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10',
[619] Fix | Delete
// http://www.captiva-power.de/products.html#tablets-en
[620] Fix | Delete
'CaptivaTablet' => 'CAPTIVA PAD',
[621] Fix | Delete
// IconBIT - http://www.iconbit.com/products/tablets/
[622] Fix | Delete
'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',
[623] Fix | Delete
// http://www.teclast.com/topic.php?channelID=70&topicID=140&pid=63
[624] Fix | Delete
'TeclastTablet' => 'T98 4G|\AdvancedAds\bP80\b|\AdvancedAds\bX90HD\b|X98 Air|X98 Air 3G|\AdvancedAds\bX89\b|P80 3G|\AdvancedAds\bX80h\b|P98 Air|\AdvancedAds\bX89HD\b|P98 3G|\AdvancedAds\bP90HD\b|P89 3G|X98 3G|\AdvancedAds\bP70h\b|P79HD 3G|G18d 3G|\AdvancedAds\bP79HD\b|\AdvancedAds\bP89s\b|\AdvancedAds\bA88\b|\AdvancedAds\bP10HD\b|\AdvancedAds\bP19HD\b|G18 3G|\AdvancedAds\bP78HD\b|\AdvancedAds\bA78\b|\AdvancedAds\bP75\b|G17s 3G|G17h 3G|\AdvancedAds\bP85t\b|\AdvancedAds\bP90\b|\AdvancedAds\bP11\b|\AdvancedAds\bP98t\b|\AdvancedAds\bP98HD\b|\AdvancedAds\bG18d\b|\AdvancedAds\bP85s\b|\AdvancedAds\bP11HD\b|\AdvancedAds\bP88s\b|\AdvancedAds\bA80HD\b|\AdvancedAds\bA80se\b|\AdvancedAds\bA10h\b|\AdvancedAds\bP89\b|\AdvancedAds\bP78s\b|\AdvancedAds\bG18\b|\AdvancedAds\bP85\b|\AdvancedAds\bA70h\b|\AdvancedAds\bA70\b|\AdvancedAds\bG17\b|\AdvancedAds\bP18\b|\AdvancedAds\bA80s\b|\AdvancedAds\bA11s\b|\AdvancedAds\bP88HD\b|\AdvancedAds\bA80h\b|\AdvancedAds\bP76s\b|\AdvancedAds\bP76h\b|\AdvancedAds\bP98\b|\AdvancedAds\bA10HD\b|\AdvancedAds\bP78\b|\AdvancedAds\bP88\b|\AdvancedAds\bA11\b|\AdvancedAds\bA10t\b|\AdvancedAds\bP76a\b|\AdvancedAds\bP76t\b|\AdvancedAds\bP76e\b|\AdvancedAds\bP85HD\b|\AdvancedAds\bP85a\b|\AdvancedAds\bP86\b|\AdvancedAds\bP75HD\b|\AdvancedAds\bP76v\b|\AdvancedAds\bA12\b|\AdvancedAds\bP75a\b|\AdvancedAds\bA15\b|\AdvancedAds\bP76Ti\b|\AdvancedAds\bP81HD\b|\AdvancedAds\bA10\b|\AdvancedAds\bT760VE\b|\AdvancedAds\bT720HD\b|\AdvancedAds\bP76\b|\AdvancedAds\bP73\b|\AdvancedAds\bP71\b|\AdvancedAds\bP72\b|\AdvancedAds\bT720SE\b|\AdvancedAds\bC520Ti\b|\AdvancedAds\bT760\b|\AdvancedAds\bT720VE\b|T720-3GE|T720-WiFi',
[625] Fix | Delete
// Onda - http://www.onda-tablet.com/buy-android-onda.html?dir=desc&limit=all&order=price
[626] Fix | Delete
'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 \AdvancedAds\b4G\b',
[627] Fix | Delete
'JaytechTablet' => 'TPC-PA762',
[628] Fix | Delete
'BlaupunktTablet' => 'Endeavour 800NG|Endeavour 1010',
[629] Fix | Delete
// http://www.digma.ru/support/download/
[630] Fix | Delete
// @todo: Ebooks also (if requested)
[631] Fix | Delete
'DigmaTablet' => '\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\b',
[632] Fix | Delete
// http://www.evolioshop.com/ro/tablete-pc.html
[633] Fix | Delete
// http://www.evolio.ro/support/downloads_static.html?cat=2
[634] Fix | Delete
// @todo: Research some more
[635] Fix | Delete
'EvolioTablet' => 'ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\AdvancedAds\bEvotab\b|\AdvancedAds\bNeura\b',
[636] Fix | Delete
// @todo http://www.lavamobiles.com/tablets-data-cards
[637] Fix | Delete
'LavaTablet' => 'QPAD E704|\AdvancedAds\bIvoryS\b|E-TAB IVORY|\bE-TAB\b',
[638] Fix | Delete
// http://www.breezetablet.com/
[639] Fix | Delete
'AocTablet' => 'MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712',
[640] Fix | Delete
// http://www.mpmaneurope.com/en/products/internet-tablets-14/android-tablets-14/
[641] Fix | Delete
'MpmanTablet' => 'MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\AdvancedAds\bMPG7\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010',
[642] Fix | Delete
// https://www.celkonmobiles.com/?_a=categoryphones&sid=2
[643] Fix | Delete
'CelkonTablet' => 'CT695|CT888|CT[\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\bCT-1\b',
[644] Fix | Delete
// http://www.wolderelectronics.com/productos/manuales-y-guias-rapidas/categoria-2-miTab
[645] Fix | Delete
'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',
[646] Fix | Delete
'MediacomTablet' => 'M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA',
[647] Fix | Delete
// http://www.mi.com/en
[648] Fix | Delete
'MiTablet' => '\bMI PAD\b|\bHM NOTE 1W\b',
[649] Fix | Delete
// http://www.nbru.cn/index.html
[650] Fix | Delete
'NibiruTablet' => 'Nibiru M1|Nibiru Jupiter One',
[651] Fix | Delete
// http://navroad.com/products/produkty/tablety/
[652] Fix | Delete
// http://navroad.com/products/produkty/tablety/
[653] Fix | Delete
'NexoTablet' => 'NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI',
[654] Fix | Delete
// http://leader-online.com/new_site/product-category/tablets/
[655] Fix | Delete
// http://www.leader-online.net.au/List/Tablet
[656] Fix | Delete
'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',
[657] Fix | Delete
// http://www.datawind.com/ubislate/
[658] Fix | Delete
'UbislateTablet' => 'UbiSlate[\s]?7C',
[659] Fix | Delete
// http://www.pocketbook-int.com/ru/support
[660] Fix | Delete
'PocketBookTablet' => 'Pocketbook',
[661] Fix | Delete
// http://www.kocaso.com/product_tablet.html
[662] Fix | Delete
'KocasoTablet' => '\b(TB-1207)\b',
[663] Fix | Delete
// http://global.hisense.com/product/asia/tablet/Sero7/201412/t20141215_91832.htm
[664] Fix | Delete
'HisenseTablet' => '\b(F5281|E2371)\b',
[665] Fix | Delete
// http://www.tesco.com/direct/hudl/
[666] Fix | Delete
'Hudl' => 'Hudl HT7S3|Hudl 2',
[667] Fix | Delete
// http://www.telstra.com.au/home-phone/thub-2/
[668] Fix | Delete
'TelstraTablet' => 'T-Hub2',
[669] Fix | Delete
'GenericTablet' => 'Android.*\AdvancedAds\b97D\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\AdvancedAds\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\AdvancedAds\bM721\b|rk30sdk|\AdvancedAds\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\AdvancedAds\bM6pro\b|CT1020W|arc 10HD|\AdvancedAds\bTP750\b|\AdvancedAds\bQTAQZ3\b|WVT101|TM1088|KT107'
[670] Fix | Delete
);
[671] Fix | Delete
[672] Fix | Delete
/**
[673] Fix | Delete
* List of mobile Operating Systems.
[674] Fix | Delete
*
[675] Fix | Delete
* @var array
[676] Fix | Delete
*/
[677] Fix | Delete
protected static $operatingSystems = array(
[678] Fix | Delete
'AndroidOS' => 'Android',
[679] Fix | Delete
'BlackBerryOS' => 'blackberry|\AdvancedAds\bBB10\b|rim tablet os',
[680] Fix | Delete
'PalmOS' => 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino',
[681] Fix | Delete
'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\AdvancedAds\bS60\b',
[682] Fix | Delete
// @reference: http://en.wikipedia.org/wiki/Windows_Mobile
[683] Fix | Delete
'WindowsMobileOS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;',
[684] Fix | Delete
// @reference: http://en.wikipedia.org/wiki/Windows_Phone
[685] Fix | Delete
// http://wifeng.cn/?r=blog&a=view&id=106
[686] Fix | Delete
// http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx
[687] Fix | Delete
// http://msdn.microsoft.com/library/ms537503.aspx
[688] Fix | Delete
// https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx
[689] Fix | Delete
'WindowsPhoneOS' => 'Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;',
[690] Fix | Delete
'iOS' => '\biPhone.*Mobile|\biPod|\biPad|AppleCoreMedia',
[691] Fix | Delete
// https://en.wikipedia.org/wiki/IPadOS
[692] Fix | Delete
'iPadOS' => 'CPU OS 13',
[693] Fix | Delete
// @reference https://en.m.wikipedia.org/wiki/Sailfish_OS
[694] Fix | Delete
// https://sailfishos.org/
[695] Fix | Delete
'SailfishOS' => 'Sailfish',
[696] Fix | Delete
// http://en.wikipedia.org/wiki/MeeGo
[697] Fix | Delete
// @todo: research MeeGo in UAs
[698] Fix | Delete
'MeeGoOS' => 'MeeGo',
[699] Fix | Delete
// http://en.wikipedia.org/wiki/Maemo
[700] Fix | Delete
// @todo: research Maemo in UAs
[701] Fix | Delete
'MaemoOS' => 'Maemo',
[702] Fix | Delete
'JavaOS' => 'J2ME/|\AdvancedAds\bMIDP\b|\AdvancedAds\bCLDC\b', // '|Java/' produces bug #135
[703] Fix | Delete
'webOS' => 'webOS|hpwOS',
[704] Fix | Delete
'badaOS' => '\AdvancedAds\bBada\b',
[705] Fix | Delete
'BREWOS' => 'BREW',
[706] Fix | Delete
);
[707] Fix | Delete
[708] Fix | Delete
/**
[709] Fix | Delete
* List of mobile User Agents.
[710] Fix | Delete
*
[711] Fix | Delete
* IMPORTANT: This is a list of only mobile browsers.
[712] Fix | Delete
* Mobile Detect 2.x supports only mobile browsers,
[713] Fix | Delete
* it was never designed to detect all browsers.
[714] Fix | Delete
* The change will come in 2017 in the 3.x release for PHP7.
[715] Fix | Delete
*
[716] Fix | Delete
* @var array
[717] Fix | Delete
*/
[718] Fix | Delete
protected static $browsers = array(
[719] Fix | Delete
//'Vivaldi' => 'Vivaldi',
[720] Fix | Delete
// @reference: https://developers.google.com/chrome/mobile/docs/user-agent
[721] Fix | Delete
'Chrome' => '\AdvancedAds\bCrMo\b|CriOS.*Mobile|Android.*Chrome/[.0-9]* Mobile',
[722] Fix | Delete
'Dolfin' => '\AdvancedAds\bDolfin\b',
[723] Fix | Delete
'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+',
[724] Fix | Delete
'Skyfire' => 'Skyfire',
[725] Fix | Delete
// Added "Edge on iOS" https://github.com/serbanghita/Mobile-Detect/issues/764
[726] Fix | Delete
'Edge' => 'EdgiOS.*Mobile|Mobile Safari/[.0-9]* Edge',
[727] Fix | Delete
'IE' => 'IEMobile|MSIEMobile', // |Trident/[.0-9]+
[728] Fix | Delete
'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS.*Mobile',
[729] Fix | Delete
'Bolt' => 'bolt',
[730] Fix | Delete
'TeaShark' => 'teashark',
[731] Fix | Delete
'Blazer' => 'Blazer',
[732] Fix | Delete
// @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3
[733] Fix | Delete
// Excluded "Edge on iOS" https://github.com/serbanghita/Mobile-Detect/issues/764
[734] Fix | Delete
'Safari' => 'Version((?!\AdvancedAds\bEdgiOS\b).)*Mobile.*Safari|Safari.*Mobile|MobileSafari',
[735] Fix | Delete
// http://en.wikipedia.org/wiki/Midori_(web_browser)
[736] Fix | Delete
//'Midori' => 'midori',
[737] Fix | Delete
//'Tizen' => 'Tizen',
[738] Fix | Delete
'WeChat' => '\AdvancedAds\bMicroMessenger\b',
[739] Fix | Delete
'UCBrowser' => 'UC.*Browser|UCWEB',
[740] Fix | Delete
'baiduboxapp' => 'baiduboxapp',
[741] Fix | Delete
'baidubrowser' => 'baidubrowser',
[742] Fix | Delete
// https://github.com/serbanghita/Mobile-Detect/issues/7
[743] Fix | Delete
'DiigoBrowser' => 'DiigoBrowser',
[744] Fix | Delete
// http://www.puffinbrowser.com/index.php
[745] Fix | Delete
// https://github.com/serbanghita/Mobile-Detect/issues/752
[746] Fix | Delete
// 'Puffin' => 'Puffin',
[747] Fix | Delete
// http://mercury-browser.com/index.html
[748] Fix | Delete
'Mercury' => '\AdvancedAds\bMercury\b',
[749] Fix | Delete
// http://en.wikipedia.org/wiki/Obigo_Browser
[750] Fix | Delete
'ObigoBrowser' => 'Obigo',
[751] Fix | Delete
// http://en.wikipedia.org/wiki/NetFront
[752] Fix | Delete
'NetFront' => 'NF-Browser',
[753] Fix | Delete
// @reference: http://en.wikipedia.org/wiki/Minimo
[754] Fix | Delete
// http://en.wikipedia.org/wiki/Vision_Mobile_Browser
[755] Fix | Delete
'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger',
[756] Fix | Delete
// @reference: https://en.wikipedia.org/wiki/Pale_Moon_(web_browser)
[757] Fix | Delete
'PaleMoon' => 'Android.*PaleMoon|Mobile.*PaleMoon',
[758] Fix | Delete
);
[759] Fix | Delete
[760] Fix | Delete
/**
[761] Fix | Delete
* Utilities.
[762] Fix | Delete
*
[763] Fix | Delete
* @var array
[764] Fix | Delete
*/
[765] Fix | Delete
protected static $utilities = array(
[766] Fix | Delete
// Experimental. When a mobile device wants to switch to 'Desktop Mode'.
[767] Fix | Delete
// http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/
[768] Fix | Delete
// https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011
[769] Fix | Delete
// https://developers.facebook.com/docs/sharing/webmasters/crawler/
[770] Fix | Delete
'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',
[771] Fix | Delete
'MobileBot' => 'Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2',
[772] Fix | Delete
'DesktopMode' => 'WPDesktop',
[773] Fix | Delete
'TV' => 'SonyDTV|HbbTV', // experimental
[774] Fix | Delete
'WebKit' => '(webkit)[ /]([\w.]+)',
[775] Fix | Delete
// @todo: Include JXD consoles.
[776] Fix | Delete
'Console' => '\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\b',
[777] Fix | Delete
'Watch' => 'SM-V700',
[778] Fix | Delete
);
[779] Fix | Delete
[780] Fix | Delete
/**
[781] Fix | Delete
* All possible HTTP headers that represent the
[782] Fix | Delete
* User-Agent string.
[783] Fix | Delete
*
[784] Fix | Delete
* @var array
[785] Fix | Delete
*/
[786] Fix | Delete
protected static $uaHttpHeaders = array(
[787] Fix | Delete
// The default User-Agent string.
[788] Fix | Delete
'HTTP_USER_AGENT',
[789] Fix | Delete
// Header can occur on devices using Opera Mini.
[790] Fix | Delete
'HTTP_X_OPERAMINI_PHONE_UA',
[791] Fix | Delete
// Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/
[792] Fix | Delete
'HTTP_X_DEVICE_USER_AGENT',
[793] Fix | Delete
'HTTP_X_ORIGINAL_USER_AGENT',
[794] Fix | Delete
'HTTP_X_SKYFIRE_PHONE',
[795] Fix | Delete
'HTTP_X_BOLT_PHONE_UA',
[796] Fix | Delete
'HTTP_DEVICE_STOCK_UA',
[797] Fix | Delete
'HTTP_X_UCBROWSER_DEVICE_UA'
[798] Fix | Delete
);
[799] Fix | Delete
[800] Fix | Delete
/**
[801] Fix | Delete
* The individual segments that could exist in a User-Agent string. VER refers to the regular
[802] Fix | Delete
* expression defined in the constant self::VER.
[803] Fix | Delete
*
[804] Fix | Delete
* @var array
[805] Fix | Delete
*/
[806] Fix | Delete
protected static $properties = array(
[807] Fix | Delete
[808] Fix | Delete
// Build
[809] Fix | Delete
'Mobile' => 'Mobile/[VER]',
[810] Fix | Delete
'Build' => 'Build/[VER]',
[811] Fix | Delete
'Version' => 'Version/[VER]',
[812] Fix | Delete
'VendorID' => 'VendorID/[VER]',
[813] Fix | Delete
[814] Fix | Delete
// Devices
[815] Fix | Delete
'iPad' => 'iPad.*CPU[a-z ]+[VER]',
[816] Fix | Delete
'iPhone' => 'iPhone.*CPU[a-z ]+[VER]',
[817] Fix | Delete
'iPod' => 'iPod.*CPU[a-z ]+[VER]',
[818] Fix | Delete
//'BlackBerry' => array('BlackBerry[VER]', 'BlackBerry [VER];'),
[819] Fix | Delete
'Kindle' => 'Kindle/[VER]',
[820] Fix | Delete
[821] Fix | Delete
// Browser
[822] Fix | Delete
'Chrome' => array('Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'),
[823] Fix | Delete
'Coast' => array('Coast/[VER]'),
[824] Fix | Delete
'Dolfin' => 'Dolfin/[VER]',
[825] Fix | Delete
// @reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox
[826] Fix | Delete
'Firefox' => array('Firefox/[VER]', 'FxiOS/[VER]'),
[827] Fix | Delete
'Fennec' => 'Fennec/[VER]',
[828] Fix | Delete
// http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx
[829] Fix | Delete
// https://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx
[830] Fix | Delete
'Edge' => 'Edge/[VER]',
[831] Fix | Delete
'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'Trident/[0-9.]+;.*rv:[VER]'),
[832] Fix | Delete
// http://en.wikipedia.org/wiki/NetFront
[833] Fix | Delete
'NetFront' => 'NetFront/[VER]',
[834] Fix | Delete
'NokiaBrowser' => 'NokiaBrowser/[VER]',
[835] Fix | Delete
'Opera' => array( ' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]' ),
[836] Fix | Delete
'Opera Mini' => 'Opera Mini/[VER]',
[837] Fix | Delete
'Opera Mobi' => 'Version/[VER]',
[838] Fix | Delete
'UCBrowser' => array( 'UCWEB[VER]', 'UC.*Browser/[VER]' ),
[839] Fix | Delete
'MQQBrowser' => 'MQQBrowser/[VER]',
[840] Fix | Delete
'MicroMessenger' => 'MicroMessenger/[VER]',
[841] Fix | Delete
'baiduboxapp' => 'baiduboxapp/[VER]',
[842] Fix | Delete
'baidubrowser' => 'baidubrowser/[VER]',
[843] Fix | Delete
'SamsungBrowser' => 'SamsungBrowser/[VER]',
[844] Fix | Delete
'Iron' => 'Iron/[VER]',
[845] Fix | Delete
// @note: Safari 7534.48.3 is actually Version 5.1.
[846] Fix | Delete
// @note: On BlackBerry the Version is overwriten by the OS.
[847] Fix | Delete
'Safari' => array( 'Version/[VER]', 'Safari/[VER]' ),
[848] Fix | Delete
'Skyfire' => 'Skyfire/[VER]',
[849] Fix | Delete
'Tizen' => 'Tizen/[VER]',
[850] Fix | Delete
'Webkit' => 'webkit[ /][VER]',
[851] Fix | Delete
'PaleMoon' => 'PaleMoon/[VER]',
[852] Fix | Delete
'SailfishBrowser' => 'SailfishBrowser/[VER]',
[853] Fix | Delete
[854] Fix | Delete
// Engine
[855] Fix | Delete
'Gecko' => 'Gecko/[VER]',
[856] Fix | Delete
'Trident' => 'Trident/[VER]',
[857] Fix | Delete
'Presto' => 'Presto/[VER]',
[858] Fix | Delete
'Goanna' => 'Goanna/[VER]',
[859] Fix | Delete
[860] Fix | Delete
// OS
[861] Fix | Delete
'iOS' => ' \bi?OS\b [VER][ ;]{1}',
[862] Fix | Delete
'Android' => 'Android [VER]',
[863] Fix | Delete
'Sailfish' => 'Sailfish [VER]',
[864] Fix | Delete
'BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'),
[865] Fix | Delete
'BREW' => 'BREW [VER]',
[866] Fix | Delete
'Java' => 'Java/[VER]',
[867] Fix | Delete
// @reference: http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/08/29/introducing-the-ie9-on-windows-phone-mango-user-agent-string.aspx
[868] Fix | Delete
// @reference: http://en.wikipedia.org/wiki/Windows_NT#Releases
[869] Fix | Delete
'Windows Phone OS' => array( 'Windows Phone OS [VER]', 'Windows Phone [VER]'),
[870] Fix | Delete
'Windows Phone' => 'Windows Phone [VER]',
[871] Fix | Delete
'Windows CE' => 'Windows CE/[VER]',
[872] Fix | Delete
// http://social.msdn.microsoft.com/Forums/en-US/windowsdeveloperpreviewgeneral/thread/6be392da-4d2f-41b4-8354-8dcee20c85cd
[873] Fix | Delete
'Windows NT' => 'Windows NT [VER]',
[874] Fix | Delete
'Symbian' => array('SymbianOS/[VER]', 'Symbian/[VER]'),
[875] Fix | Delete
'webOS' => array('webOS/[VER]', 'hpwOS/[VER];'),
[876] Fix | Delete
);
[877] Fix | Delete
[878] Fix | Delete
/**
[879] Fix | Delete
* Construct an instance of this class.
[880] Fix | Delete
*
[881] Fix | Delete
* @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored.
[882] Fix | Delete
* If left empty, will use the global _SERVER['HTTP_*'] vars instead.
[883] Fix | Delete
* @param string $userAgent Inject the User-Agent header. If null, will use HTTP_USER_AGENT
[884] Fix | Delete
* from the $headers array instead.
[885] Fix | Delete
*/
[886] Fix | Delete
public function __construct(
[887] Fix | Delete
array $headers = null,
[888] Fix | Delete
$userAgent = null
[889] Fix | Delete
) {
[890] Fix | Delete
$this->setHttpHeaders($headers);
[891] Fix | Delete
$this->setUserAgent($userAgent);
[892] Fix | Delete
}
[893] Fix | Delete
[894] Fix | Delete
/**
[895] Fix | Delete
* Get the current script version.
[896] Fix | Delete
* This is useful for the demo.php file,
[897] Fix | Delete
* so people can check on what version they are testing
[898] Fix | Delete
* for mobile devices.
[899] Fix | Delete
*
[900] Fix | Delete
* @return string The version number in semantic version format.
[901] Fix | Delete
*/
[902] Fix | Delete
public static function getScriptVersion()
[903] Fix | Delete
{
[904] Fix | Delete
return self::VERSION;
[905] Fix | Delete
}
[906] Fix | Delete
[907] Fix | Delete
/**
[908] Fix | Delete
* Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers.
[909] Fix | Delete
*
[910] Fix | Delete
* @param array $httpHeaders The headers to set. If null, then using PHP's _SERVER to extract
[911] Fix | Delete
* the headers. The default null is left for backwards compatibility.
[912] Fix | Delete
*/
[913] Fix | Delete
public function setHttpHeaders($httpHeaders = null)
[914] Fix | Delete
{
[915] Fix | Delete
// use global _SERVER if $httpHeaders aren't defined
[916] Fix | Delete
if (!is_array($httpHeaders) || !count($httpHeaders)) {
[917] Fix | Delete
$httpHeaders = $_SERVER;
[918] Fix | Delete
}
[919] Fix | Delete
[920] Fix | Delete
// clear existing headers
[921] Fix | Delete
$this->httpHeaders = array();
[922] Fix | Delete
[923] Fix | Delete
// Only save HTTP headers. In PHP land, that means only _SERVER vars that
[924] Fix | Delete
// start with HTTP_.
[925] Fix | Delete
foreach ($httpHeaders as $key => $value) {
[926] Fix | Delete
if (substr($key, 0, 5) === 'HTTP_') {
[927] Fix | Delete
$this->httpHeaders[$key] = $value;
[928] Fix | Delete
}
[929] Fix | Delete
}
[930] Fix | Delete
[931] Fix | Delete
// In case we're dealing with CloudFront, we need to know.
[932] Fix | Delete
$this->setCfHeaders($httpHeaders);
[933] Fix | Delete
}
[934] Fix | Delete
[935] Fix | Delete
/**
[936] Fix | Delete
* Retrieves the HTTP headers.
[937] Fix | Delete
*
[938] Fix | Delete
* @return array
[939] Fix | Delete
*/
[940] Fix | Delete
public function getHttpHeaders()
[941] Fix | Delete
{
[942] Fix | Delete
return $this->httpHeaders;
[943] Fix | Delete
}
[944] Fix | Delete
[945] Fix | Delete
/**
[946] Fix | Delete
* Retrieves a particular header. If it doesn't exist, no exception/error is caused.
[947] Fix | Delete
* Simply null is returned.
[948] Fix | Delete
*
[949] Fix | Delete
* @param string $header The name of the header to retrieve. Can be HTTP compliant such as
[950] Fix | Delete
* "User-Agent" or "X-Device-User-Agent" or can be php-esque with the
[951] Fix | Delete
* all-caps, HTTP_ prefixed, underscore separated awesomeness.
[952] Fix | Delete
*
[953] Fix | Delete
* @return string|null The value of the header.
[954] Fix | Delete
*/
[955] Fix | Delete
public function getHttpHeader($header)
[956] Fix | Delete
{
[957] Fix | Delete
// are we using PHP-flavored headers?
[958] Fix | Delete
if (strpos($header, '_') === false) {
[959] Fix | Delete
$header = str_replace('-', '_', $header);
[960] Fix | Delete
$header = strtoupper($header);
[961] Fix | Delete
}
[962] Fix | Delete
[963] Fix | Delete
// test the alternate, too
[964] Fix | Delete
$altHeader = 'HTTP_' . $header;
[965] Fix | Delete
[966] Fix | Delete
//Test both the regular and the HTTP_ prefix
[967] Fix | Delete
if (isset($this->httpHeaders[$header])) {
[968] Fix | Delete
return $this->httpHeaders[$header];
[969] Fix | Delete
} elseif (isset($this->httpHeaders[$altHeader])) {
[970] Fix | Delete
return $this->httpHeaders[$altHeader];
[971] Fix | Delete
}
[972] Fix | Delete
[973] Fix | Delete
return null;
[974] Fix | Delete
}
[975] Fix | Delete
[976] Fix | Delete
public function getMobileHeaders()
[977] Fix | Delete
{
[978] Fix | Delete
return self::$mobileHeaders;
[979] Fix | Delete
}
[980] Fix | Delete
[981] Fix | Delete
/**
[982] Fix | Delete
* Get all possible HTTP headers that
[983] Fix | Delete
* can contain the User-Agent string.
[984] Fix | Delete
*
[985] Fix | Delete
* @return array List of HTTP headers.
[986] Fix | Delete
*/
[987] Fix | Delete
public function getUaHttpHeaders()
[988] Fix | Delete
{
[989] Fix | Delete
return self::$uaHttpHeaders;
[990] Fix | Delete
}
[991] Fix | Delete
[992] Fix | Delete
[993] Fix | Delete
/**
[994] Fix | Delete
* Set CloudFront headers
[995] Fix | Delete
* http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-device
[996] Fix | Delete
*
[997] Fix | Delete
* @param array $cfHeaders List of HTTP headers
[998] Fix | Delete
*
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function