php判断是否手机浏览器访问_php判断手机还是电脑
2015-07-12 19:40:25 By: shinyuu
由于我的博客是采用响应式布局的、难免会遇到需要判断是手机用户还是电脑用户、其实我的博客关于响应式的功能已经奶不错了、但是因为百度广告还没有推出响应式的功能、那么在手机访问的时候如果要显示百度广告、体验会很差、所有为响应式做的努力都白费了、下面我们找到判断为手机用户php代码分享给大家
方法一
<?php function isMobile(){ $useragent=isset($_SERVER[´HTTP_USER_AGENT´]) ? $_SERVER[´HTTP_USER_AGENT´] : ´´; $useragent_commentsblock=preg_match(´|(.*?)| ´,$useragent,$matches)>0?$matches[0]:´´; function CheckSubstrs($substrs,$text){ foreach($substrs as $substr) if(false!==strpos($text,$substr)){ return true; } return false; } $mobile_os_list=array(´Google Wireless Transcoder´,´Windows CE´, ´WindowsCE´,´Symbian´,´Android´,´armv6l´,´armv5´,´Mobile´, ´CentOS´,´mowser´,´AvantGo´,´Opera Mobi´,´J2ME/MIDP´, ´Smartphone´,´Go.Web´,´Palm´,´iPAQ´); $mobile_token_list=array(´Profile/MIDP´,´Configuration/CLDC-´, ´160×160´,´176×220´,´240×240´,´240×320´,´320×240´,´UP.Browser´, ´UP.Link´,´SymbianOS´,´PalmOS´,´PocketPC´,´SonyEricsson´, ´Nokia´,´BlackBerry´,´Vodafone´,´BenQ´,´Novarra-Vision´, ´Iris´,´NetFront´,´HTC_´,´Xda_´,´SAMSUNG-SGH´,´Wapaka´, ´DoCoMo´,´iPhone´,´iPod´); $found_mobile=CheckSubstrs($mobile_os_list,$useragent_commentsblock) || CheckSubstrs($mobile_token_list,$useragent); if ($found_mobile){ return true; }else{ return false; } } if (isMobile()) echo ´手机访问 DD博客´; else echo ´电脑访问 DD博客´; ?>
方法二
function is_mobile_request() { $_SERVER[´ALL_HTTP´] = isset($_SERVER[´ALL_HTTP´]) ? $_SERVER[´ALL_HTTP´] : ´´; $mobile_browser = ´0´; if(preg_match(´/(up.browser|up.link|mmp|symbian|smartphone| midp|wap|phone|iphone|ipad|ipod|android|xoom)/i´, strtolower($_SERVER[´HTTP_USER_AGENT´]))) $mobile_browser ; if((isset($_SERVER[´HTTP_ACCEPT´])) and (strpos(strtolower( $_SERVER[´HTTP_ACCEPT´]),´application/vnd.wap.xhtml xml´) !== false)) $mobile_browser ; if(isset($_SERVER[´HTTP_X_WAP_PROFILE´])) $mobile_browser ; if(isset($_SERVER[´HTTP_PROFILE´])) $mobile_browser ; $mobile_ua = strtolower(substr($_SERVER[´HTTP_USER_AGENT´],0,4)); $mobile_agents = array( ´w3c ´,´acs-´,´alav´,´alca´,´amoi´,´audi´,´avan´,´benq´,´bird´,´blac´, ´blaz´,´brew´,´cell´,´cldc´,´cmd-´,´dang´,´doco´,´eric´,´hipt´,´inno´, ´ipaq´,´java´,´jigs´,´kddi´,´keji´,´leno´,´lg-c´,´lg-d´,´lg-g´,´lge-´, ´maui´,´maxo´,´midp´,´mits´,´mmef´,´mobi´,´mot-´,´moto´,´mwbp´,´nec-´, ´newt´,´noki´,´oper´,´palm´,´pana´,´pant´,´phil´,´play´,´port´,´prox´, ´qwap´,´sage´,´sams´,´sany´,´sch-´,´sec-´,´send´,´seri´,´sgh-´,´shar´, ´sie-´,´siem´,´smal´,´smar´,´sony´,´sph-´,´symb´,´t-mo´,´teli´,´tim-´, ´tosh´,´tsm-´,´upg1´,´upsi´,´vk-v´,´voda´,´wap-´,´wapa´,´wapi´,´wapp´, ´wapr´,´webc´,´winw´,´winw´,´xda´,´xda-´ ); if(in_array($mobile_ua, $mobile_agents)) $mobile_browser ; if(strpos(strtolower($_SERVER[´ALL_HTTP´]), ´operamini´) !== false) $mobile_browser ; // Pre-final check to reset everything if the user is on Windows if(strpos(strtolower($_SERVER[´HTTP_USER_AGENT´]), ´windows´) !== false) $mobile_browser=0; // But WP7 is also Windows, with a slightly different characteristic if(strpos(strtolower($_SERVER[´HTTP_USER_AGENT´]), ´windows phone´) !== false) $mobile_browser ; if($mobile_browser>0) return true; else return false; }
这两种方法我都亲测过、没有问题的、希望对大家有用
若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力
想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)
或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)
如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教
为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)
感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛