Qual é a maneira mais simples de saber se um usuário está usando um dispositivo móvel para navegar no meu site usando PHP?
Me deparei com muitas classes que você pode usar, mas eu esperava uma condição simples!
Existe uma maneira de fazer isso?
Qual é a maneira mais simples de saber se um usuário está usando um dispositivo móvel para navegar no meu site usando PHP?
Me deparei com muitas classes que você pode usar, mas eu esperava uma condição simples!
Existe uma maneira de fazer isso?
Respostas:
Aqui está uma fonte:
Código:
<?php
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4)))
header('Location: http://detectmobilebrowser.com/mobile');
?>
Eu escrevi este script para detectar um navegador móvel em PHP.
O código detecta um usuário com base na sequência de agente do usuário preg_match (), palavras que são encontradas apenas em sequências de agente do usuário de dispositivos móveis após centenas de testes. Ele tem 100% de precisão em todos os dispositivos móveis atuais e atualmente estou atualizando-o para oferecer suporte a mais dispositivos móveis à medida que eles são lançados. O código é chamado isMobile e é o seguinte:
function isMobile() {
return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
}
Você pode usá-lo assim:
// Use the function
if(isMobile()){
// Do something for only mobile users
}
else {
// Do something for only desktop users
}
Para redirecionar um usuário para o seu site móvel, eu faria o seguinte:
// Create the function, so you can use it
function isMobile() {
return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
}
// If the user is on a mobile device, redirect them
if(isMobile()){
header("Location: http://m.yoursite.com/");
}
Deixe-me saber se você tiver alguma dúvida e boa sorte!
if($isMobile) {}
?
return preg_match("/(android|webos|avantgo|iphone|ipad|ipod|blackberry|iemobile|bolt|boost|cricket|docomo|fone|hiptop|mini|opera mini|kitkat|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
Esta é uma coleção de alguns novos dispositivos.
Eu achei o mobile detect muito simples e você pode usar a isMobile()
função :)
Simplesmente você pode seguir o link. é muito simples e muito fácil de usar. Eu estou usando isso. Está funcionando bem.
use assim
//include the file
require_once 'Mobile_Detect.php';
$detect = new Mobile_Detect;
// Any mobile device (phones or tablets).
if ( $detect->isMobile() ) {
//do some code
}
// Any tablet device.
if( $detect->isTablet() ){
//do some code
}
function isMobileDev(){
if(isset($_SERVER['HTTP_USER_AGENT']) and !empty($_SERVER['HTTP_USER_AGENT'])){
$user_ag = $_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(Mobile|Android|Tablet|GoBrowser|[0-9]x[0-9]*|uZardWeb\/|Mini|Doris\/|Skyfire\/|iPhone|Fennec\/|Maemo|Iris\/|CLDC\-|Mobi\/)/uis',$user_ag)){
return true;
}else{
return false;
};
}else{
return false;
};
}
Fiquei me perguntando, até agora, por que alguém não havia postado uma pequena alteração na resposta aceita para o uso de implode()
, a fim de ter uma melhor legibilidade do código. Então aqui vai:
<?php
$uaFull = strtolower($_SERVER['HTTP_USER_AGENT']);
$uaStart = substr($uaFull, 0, 4);
$uaPhone = [
'(android|bb\d+|meego).+mobile',
'avantgo',
'bada\/',
'blackberry',
'blazer',
'compal',
'elaine',
'fennec',
'hiptop',
'iemobile',
'ip(hone|od)',
'iris',
'kindle',
'lge ',
'maemo',
'midp',
'mmp',
'mobile.+firefox',
'netfront',
'opera m(ob|in)i',
'palm( os)?',
'phone',
'p(ixi|re)\/',
'plucker',
'pocket',
'psp',
'series(4|6)0',
'symbian',
'treo',
'up\.(browser|link)',
'vodafone',
'wap',
'windows ce',
'xda',
'xiino'
];
$uaMobile = [
'1207',
'6310',
'6590',
'3gso',
'4thp',
'50[1-6]i',
'770s',
'802s',
'a wa',
'abac|ac(er|oo|s\-)',
'ai(ko|rn)',
'al(av|ca|co)',
'amoi',
'an(ex|ny|yw)',
'aptu',
'ar(ch|go)',
'as(te|us)',
'attw',
'au(di|\-m|r |s )',
'avan',
'be(ck|ll|nq)',
'bi(lb|rd)',
'bl(ac|az)',
'br(e|v)w',
'bumb',
'bw\-(n|u)',
'c55\/',
'capi',
'ccwa',
'cdm\-',
'cell',
'chtm',
'cldc',
'cmd\-',
'co(mp|nd)',
'craw',
'da(it|ll|ng)',
'dbte',
'dc\-s',
'devi',
'dica',
'dmob',
'do(c|p)o',
'ds(12|\-d)',
'el(49|ai)',
'em(l2|ul)',
'er(ic|k0)',
'esl8',
'ez([4-7]0|os|wa|ze)',
'fetc',
'fly(\-|_)',
'g1 u',
'g560',
'gene',
'gf\-5',
'g\-mo',
'go(\.w|od)',
'gr(ad|un)',
'haie',
'hcit',
'hd\-(m|p|t)',
'hei\-',
'hi(pt|ta)',
'hp( i|ip)',
'hs\-c',
'ht(c(\-| |_|a|g|p|s|t)|tp)',
'hu(aw|tc)',
'i\-(20|go|ma)',
'i230',
'iac( |\-|\/)',
'ibro',
'idea',
'ig01',
'ikom',
'im1k',
'inno',
'ipaq',
'iris',
'ja(t|v)a',
'jbro',
'jemu',
'jigs',
'kddi',
'keji',
'kgt( |\/)',
'klon',
'kpt ',
'kwc\-',
'kyo(c|k)',
'le(no|xi)',
'lg( g|\/(k|l|u)|50|54|\-[a-w])',
'libw',
'lynx',
'm1\-w',
'm3ga',
'm50\/',
'ma(te|ui|xo)',
'mc(01|21|ca)',
'm\-cr',
'me(rc|ri)',
'mi(o8|oa|ts)',
'mmef',
'mo(01|02|bi|de|do|t(\-| |o|v)|zz)',
'mt(50|p1|v )',
'mwbp',
'mywa',
'n10[0-2]',
'n20[2-3]',
'n30(0|2)',
'n50(0|2|5)',
'n7(0(0|1)|10)',
'ne((c|m)\-|on|tf|wf|wg|wt)',
'nok(6|i)',
'nzph',
'o2im',
'op(ti|wv)',
'oran',
'owg1',
'p800',
'pan(a|d|t)',
'pdxg',
'pg(13|\-([1-8]|c))',
'phil',
'pire',
'pl(ay|uc)',
'pn\-2',
'po(ck|rt|se)',
'prox',
'psio',
'pt\-g',
'qa\-a',
'qc(07|12|21|32|60|\-[2-7]|i\-)',
'qtek',
'r380',
'r600',
'raks',
'rim9',
'ro(ve|zo)',
's55\/',
'sa(ge|ma|mm|ms|ny|va)',
'sc(01|h\-|oo|p\-)',
'sdk\/',
'se(c(\-|0|1)|47|mc|nd|ri)',
'sgh\-',
'shar',
'sie(\-|m)',
'sk\-0',
'sl(45|id)',
'sm(al|ar|b3|it|t5)',
'so(ft|ny)',
'sp(01|h\-|v\-|v )',
'sy(01|mb)',
't2(18|50)',
't6(00|10|18)',
'ta(gt|lk)',
'tcl\-',
'tdg\-',
'tel(i|m)',
'tim\-',
't\-mo',
'to(pl|sh)',
'ts(70|m\-|m3|m5)',
'tx\-9',
'up(\.b|g1|si)',
'utst',
'v400',
'v750',
'veri',
'vi(rg|te)',
'vk(40|5[0-3]|\-v)',
'vm40',
'voda',
'vulc',
'vx(52|53|60|61|70|80|81|83|85|98)',
'w3c(\-| )',
'webc',
'whit',
'wi(g |nc|nw)',
'wmlb',
'wonu',
'x700',
'yas\-',
'your',
'zeto',
'zte\-'
];
$isPhone = preg_match('/' . implode($uaPhone, '|') . '/i', $uaFull);
$isMobile = preg_match('/' . implode($uaMobile, '|') . '/i', $uaStart);
if($isPhone || $isMobile) {
// do something with that device
} else {
// process normally
}
Não existe uma maneira confiável. Talvez você possa observar a sequência de agente do usuário , mas isso pode ser falsificado ou omitido. Como alternativa, você pode usar um serviço GeoIP para pesquisar o endereço IP do cliente, mas, novamente, isso pode ser facilmente contornado.
Você só precisa incluir o user_agent.php
arquivo que pode ser encontrado na página Detecção de dispositivos móveis na página PHP e usar o código a seguir.
<?php
//include file
include_once 'user_agent.php';
//create an instance of UserAgent class
$ua = new UserAgent();
//if site is accessed from mobile, then redirect to the mobile site.
if($ua->is_mobile()){
header("Location:http://m.codexworld.com");
exit;
}
?>
<?php
//-- Very simple way
$useragent = $_SERVER['HTTP_USER_AGENT'];
$iPod = stripos($useragent, "iPod");
$iPad = stripos($useragent, "iPad");
$iPhone = stripos($useragent, "iPhone");
$Android = stripos($useragent, "Android");
$iOS = stripos($useragent, "iOS");
//-- You can add billion devices
$DEVICE = ($iPod||$iPad||$iPhone||$Android||$iOS);
if (!$DEVICE) { ?>
<!-- What you want for all non-mobile devices. Anything with all HTML, PHP, CSS, even full page codes-->
<?php }else{ ?>
<!-- What you want for all mobile devices. Anything with all HTML, PHP, CSS, even full page codes -->
<?php } ?>
A detecção de dispositivos PHP no 51Degrees.com faz exatamente o que você deseja - detecta dispositivos móveis e várias propriedades associadas aos dispositivos detectados. É simples de usar e não requer manutenção. A configuração é feita em 4 etapas fáceis:
require_once 'path/to/core/51Degrees.php';
require_once 'path/to/core/51Degrees_usage.php';
if ($_51d['IsMobile'])
{
//Start coding for a mobile device here.
}
51O detector de dispositivo de graus não usa expressões regulares para detecções. Somente partes importantes dos cabeçalhos HTTP são usadas para corresponder aos dispositivos. O que torna esta solução a mais rápida (5 000 000 detecções por segundo em hardware medíocre) e a mais precisa (99,97% de precisão), à medida que centenas de novos dispositivos são adicionados semanalmente ao banco de dados (os tipos de dispositivos suportados incluem consoles, TVs inteligentes, leitores eletrônicos, comprimidos e muito mais).
O software é de código aberto distribuído sob a Mozilla Public License 2 e compatível com projetos comerciais e de código aberto. Como solução adicional, a 51Degrees também contém um otimizador de imagem PHP complementar que pode redimensionar automaticamente as imagens para dispositivos móveis.
Por padrão, o detector de dispositivo PHP 51Degrees usa o arquivo de dados Lite, que é gratuito e contém mais de 30000 dispositivos e 50 propriedades para cada dispositivo. O arquivo Lite é atualizado uma vez a cada 3 meses. Se você deseja obter um nível mais alto de detalhes sobre a solicitação de dispositivos móveis, os arquivos de dados Premium e Enterprise estão disponíveis. O Premium contém mais de 70000 dispositivos e 100 propriedades para cada dispositivo com atualizações semanais. O Enterprise é atualizado diariamente e contém mais de 150000 dispositivos com 150 propriedades para cada um.
Lista completa de propriedades do dispositivo .
Compare arquivos de dados .
Você também pode usar uma API de terceiros para fazer a detecção do dispositivo por meio da cadeia de caracteres do agente do usuário. Um desses serviços é www.useragentinfo.co . Basta se inscrever e obter seu token de API e abaixo é como você obtém as informações do dispositivo via PHP:
<?php
$useragent = $_SERVER['HTTP_USER_AGENT'];
// get api token at https://www.useragentinfo.co/
$token = "<api-token>";
$url = "https://www.useragentinfo.co/api/v1/device/";
$data = array('useragent' => $useragent);
$headers = array();
$headers[] = "Content-type: application/json";
$headers[] = "Authorization: Token " . $token;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($status != 200 ) {
die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl));
}
curl_close($curl);
echo $json_response;
?>
E aqui está a resposta de amostra se o visitante estiver usando um iPhone:
{
"device_type":"SmartPhone",
"browser_version":"5.1",
"os":"iOS",
"os_version":"5.1",
"device_brand":"Apple",
"bot":false,
"browser":"Mobile Safari",
"device_model":"iPhone"
}
function isMobile(){
if(defined(isMobile))return isMobile;
@define(isMobile,(!($HUA=@trim(@$_SERVER['HTTP_USER_AGENT']))?0:
(
preg_match('/(android|bb\d+|meego).+mobile|silk|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i'
,$HUA)
||
preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i'
,$HUA)
)
));
}
echo isMobile()?1:0;
// OR
echo isMobile?1:0;
Caso você se preocupe com o tamanho da tela, é possível armazenar a largura e a altura da tela como valores de cookie, se ainda não existirem, e fazer o redirecionamento de página própria.
Agora você tem cookies no lado do cliente e do servidor e pode usá-lo para determinar telefones celulares, tablets e outros dispositivos
Aqui está um exemplo rápido de como você pode fazer isso com JavaScript. Aviso! [este código contém pseudo código].
if (!getcookie("screen_size")) {
var screen_width = screen.width;
var screen_height = screen.height;
setcookie("screen_size", screen_width+", " +screen_height);
go2(geturl());
}
<?php
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4)))
{
echo('This is mobile device');
}
else
{
echo('This is Desktop/Laptop device');
}
?>