php判断手机端方法

作者:admi... 点击数: 0 收藏到会员中心
最后编辑时间: 2021-07-09 11:07
1
2
3
4
5
6
7
8
9
10
11
12
13
 public function isMobile()
    {
        $user_agent $_SERVER['HTTP_USER_AGENT'];
        $result = false;
        if (!empty($user_agent)) {
            $result = 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|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|phone)|xda|xiino|android|ipad|playbook|silk/i',$user_agent)||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($user_agent,0,4)
                );
        }
 
        return $result;
    }

此方法过于简单,且判断结果时常出现不准确的情况,那么要如果才能再加的精准呢?

请往下看

付费内容限时免费中...

我们先收集不同浏览器的

HTTP_USER_AGENT

此方法可以用PHP或是JS来收集

PHP

1
<?php echo $_SERVER['HTTP_USER_AGENT']; ?>

JS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCtype html>
<html>
<head>
<title></title>
</head>
<body οnlοad="whatBrowser()">
<script>   
function whatBrowser() {
document.Browser.Name.value=navigator.appName;
document.Browser.Version.value=navigator.appVersion;
document.Browser.Code.value=navigator.appCodeName;
document.Browser.Agent.value=navigator.userAgent;
}
</script>
<table>
<form name="Browser">
<tr>
<td> 浏览器名称: </td>
<td> <input type="txt" name="Name" size="110%"></td>
</tr>
<tr>
<td> 版本号:</td>
<td> <input type="txt" name="Version" size="110%"></td>
</tr>
<tr>
<td> 代码名称: </td>
<td> <input type="txt" name="Code" size="110%"></td>
</tr>
<tr>
<td> 用户代理标识:</td>
<td> <input type="txt" name="Agent" size="110%"></td>
</tr>
</form>
</table>
</body>
</html>


获取到的结果如下:

电脑端firefox:

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0

电脑端google chrome

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36

电脑端opera浏览器

 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36 OPR/77.0.4054.172

电脑端edge浏览器

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64

微信内部浏览器

Mozilla/5.0 (iPhone; CPU iPhone OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.7(0x18000731) NetType/WIFI Language/zh_CN

微信小程序

Mozilla/5.0 (iPhone; CPU iPhone OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.7(0x18000731) NetType/WIFI Language/zh_CN miniProgram

普通手机端浏览器

Mozilla/5.0 (iPhone; CPU iPhone OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Mobile/15E148 Safari/604.1

支付宝小程序

Mozilla/5.0 (iPhone; CPU iPhone OS 14_5 like Mac OS X; zh-CN) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18E199 UCBrowser/13.4.1.1492 Mobile AliApp(TUnionSDK/0.1.20.4)

那么来写一个比较全面的判断


代码示例

1
2
3
<?php // These lines are mandatory.
require_once 'Mobile_Detect.php';
$detect new Mobile_Detect;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
// Basic detection.
$detect->isMobile();
$detect->isTablet();
 
// Magic methods.
$detect->isIphone();
$detect->isSamsung();
// [...]
 
// Alternative to magic methods.
$detect->is('iphone');
 
// Find the version of component.
$detect->version('Android');
 
// Additional match method.
$detect->match('regex.*here');
 
// Browser grade method.
$detect->mobileGrade();
 
// Batch methods.
$detect->setUserAgent($userAgent);
$detect->setHttpHeaders($httpHeaders);
1
2
3
4
5
<?php
// Check for mobile environment.
if ($detect->isMobile()) {
    // Your code here.
}
1
2
3
4
5
<?php
// Check for tablet device.
if($detect->isTablet()){
    // Your code here.
}
1
2
3
4
5
<?php
// Check for any mobile device, excluding tablets.
if ($detect->isMobile() && !$detect->isTablet()) {
    // Your code here.
}
1
2
3
4
5
6
<?php
//  Keep the value in $_SESSION for later use
//    and for optimizing the speed of the code.
if(!$_SESSION['isMobile']){
    $_SESSION['isMobile'] = $detect->isMobile();
}
1
2
3
4
5
<?php
// Redirect the user to your mobile version of the site.
if($detect->isMobile()){
    header('http://m.magentola.com', true, 301);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
// Include and instantiate the class.
require_once 'Mobile_Detect.php';
$detect new Mobile_Detect;
 
// Any mobile device (phones or tablets).
if $detect->isMobile() ) {
 
}
 
// Any tablet device.
if$detect->isTablet() ){
 
}
 
// Exclude tablets.
if$detect->isMobile() && !$detect->isTablet() ){
 
}
 
// Check for a specific platform with the help of the magic methods:
if$detect->isiOS() ){
 
}
 
if$detect->isAndroidOS() ){
 
}
 
// Alternative method is() for checking specific properties.
// WARNING: this method is in BETA, some keyword properties will change in the future.
$detect->is('Chrome')
$detect->is('iOS')
$detect->is('UCBrowser')
$detect->is('Opera')
// [...]
 
// Batch mode using setUserAgent():
$userAgents array(
'Mozilla/5.0 (Linux; Android 4.0.4; Desire HD Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19',
'BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103',
// [...]
);
foreach($userAgents as $userAgent){
 
  $detect->setUserAgent($userAgent);
  $isMobile $detect->isMobile();
  $isTablet $detect->isTablet();
  // Use the force however you want.
 
}
 
// Get the version() of components.
// WARNING: this method is in BETA, some keyword properties will change in the future.
$detect->version('iPad'); // 4.3 (float)
$detect->version('iPhone'// 3.1 (float)
$detect->version('Android'); // 2.1 (float)
$detect->version('Opera Mini'); // 5.0 (float)
// [...]

下载链接:

https://github.com/serbanghita/Mobile-Detect/releases

热点标签:
内容说明:
如您需要转载本文请保留以下信息是对作者发文的支持与尊重:

php判断手机端方法 来源于 https://www.magentola.com/news-read-213.html
  • 0
      超赞
  • 0
      期待
  • 0
      无感
  • 0
      雷囧
  • 0
      垃圾
  • 0
      路过
  • 3
上一篇:如何限制特定国家人群访问网站
下一篇:BT面板必须绑定账号的解决方案
相关内容
产品推荐