php函数实现判断是否移动端访问


Posted in PHP onMarch 03, 2015

忘记在哪里获取的函数了,刚才不了心在一个包里面找到,临时保存起来

/**

 * 是否移动端访问访问

 *

 * @return bool

 */

function isMobile()

{ 

    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备

    if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))

    {

        return true;

    } 

    // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息

    if (isset ($_SERVER['HTTP_VIA']))

    { 

        // 找不到为flase,否则为true

        return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;

    } 

    // 脑残法,判断手机发送的客户端标志,兼容性有待提高

    if (isset ($_SERVER['HTTP_USER_AGENT']))

    {

        $clientkeywords = array ('nokia',

            'sony',

            'ericsson',

            'mot',

            'samsung',

            'htc',

            'sgh',

            'lg',

            'sharp',

            'sie-',

            'philips',

            'panasonic',

            'alcatel',

            'lenovo',

            'iphone',

            'ipod',

            'blackberry',

            'meizu',

            'android',

            'netfront',

            'symbian',

            'ucweb',

            'windowsce',

            'palm',

            'operamini',

            'operamobi',

            'openwave',

            'nexusone',

            'cldc',

            'midp',

            'wap',

            'mobile'

            ); 

        // 从HTTP_USER_AGENT中查找手机浏览器的关键字

        if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))

        {

            return true;

        } 

    } 

    // 协议法,因为有可能不准确,放到最后判断

    if (isset ($_SERVER['HTTP_ACCEPT']))

    { 

        // 如果只支持wml并且不支持html那一定是移动设备

        // 如果支持wml和html但是wml在html之前则是移动设备

        if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))))

        {

            return true;

        } 

    } 

    return false;

}

非常简单实用的函数,分享给大家,希望大家能够喜欢。

PHP 相关文章推荐
PHP5.0对象模型探索之抽象方法和抽象类
Sep 05 PHP
Php部分常见问题总结
Oct 09 PHP
PHP数据库开发知多少
Oct 09 PHP
加速XP搜索功能堪比vista
Mar 22 PHP
php读取msn上的用户信息类
Dec 05 PHP
php file_get_contents函数轻松采集html数据
Apr 22 PHP
php 伪造本地文件包含漏洞的代码
Nov 03 PHP
PHP中常见的密码处理方式和建议总结
Oct 14 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
Feb 11 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
Apr 26 PHP
php中instanceof 与 is_a()区别分析
Mar 03 #PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 #PHP
ecshop 2.72如何修改后台访问地址
Mar 03 #PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
Mar 03 #PHP
ecshop后台编辑器替换成ueditor编辑器
Mar 03 #PHP
php使用curl出现Expect:100-continue解决方法
Mar 03 #PHP
php实现四舍五入的方法小结
Mar 03 #PHP
You might like
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
utf8的编码算法 转载
2006/12/27 Javascript
jquery.validate使用攻略 第二部
2010/07/01 Javascript
JavaScript中继承的一些示例方法与属性参考
2010/08/07 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
2020/08/03 Javascript
python中遍历文件的3个方法
2014/09/02 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
浅析使用Python搭建http服务器
2019/10/27 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
法制宣传月活动总结
2014/04/29 职场文书
小学社会实践活动总结
2014/07/03 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
毕业生对母校寄语
2015/02/26 职场文书
庆七一主持词
2015/06/29 职场文书
学生病假条怎么写
2015/08/17 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
Django 如何实现文件上传下载
2021/04/08 Python
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android
MYSQL如何查看操作日志详解
2022/05/30 MySQL