关于本站
“最难不过坚持”
本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作
有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339
2655
39
分类目录
最新评论
- https://jueru.net/
-
- :weixiao:
-
- :shuijiao: :weiqu: :zhenbang: :leng:
-
- :yiwen: :yiwen: :yiwen: :yiwen:
-
- 这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
-
文章标签更多
<?php /** * 客户端工具类 * * For example: * * clientUtil::getBrowser($_SERVER['HTTP_USER_AGENT'],'是否显示版本号') //获取客户端游览器类型和版本号 * clientUtil::getPlatForm($_SERVER['HTTP_USER_AGENT],'是否显示版本号') //获取客户端操作系统和版本号 * * @author 2016-01-23 */ class clientUtil { /** * 各类主流游览器正则 * @var array * @author 2016-01-22 */ protected static $browsers = array( 'Edge' => 'Edge', 'IE' => 'MSIE|IEMobile|MSIEMobile|Trident/[.0-9]+', 'Chrome' => '(?:\bCrMo\b|CriOS|Android)?.*Chrome/[.0-9]* (Mobile)?', 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+|Coast/[0-9.]+', 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile', 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari', 'UCBrowser' => 'UC.*Browser|UCWEB', //UC游览器 'QQBrowser' => 'MQQBrowser|TencentTraveler', //QQ游览器 'The world' => 'The world', //世界之窗游览器 'Maxthon' => 'Maxthon', //遨游游览器 'baiduboxapp' => 'baiduboxapp', 'baidubrowser' => 'baidubrowser', 'NokiaBrowser' => 'Nokia', ); /** * 操作系统正则 * note:移动设备的系统需优先匹配 * 故正则需要放在电脑系统前面 * @var array * @author 2016-01-23 */ protected static $platforms = array( 'iOS' => '\biPhone.*Mobile|\biPod|\biPad', 'Windows Mobile OS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;', 'Windows Phone OS' => 'Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;', 'Android' => 'Android', 'BlackBerry OS' => 'blackberry|\bBB10\b|rim tablet os', //黑莓 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b', //塞班 'webOS' => 'webOS|hpwOS', 'MicroMessenger' => 'MicroMessenger', //微信 'Windows' => 'Windows', 'Windows NT' => 'Windows NT', 'Mac OS X' => 'Mac OS X', 'Ubuntu' => 'Ubuntu', 'Linux' => 'Linux', 'Chrome OS' => 'CrOS', ); /** * 版本号匹配正则(游览器 + 操作系统) * @var array * @author 2016-01-22 */ protected static $versionRegexs = array( // Browser 'Maxthon' => 'Maxthon [VER]', //遨游 'Chrome' => array('Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'), //谷歌 'Firefox' => 'Firefox/[VER]', //火狐 'Fennec' => 'Fennec/[VER]', //火狐 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'rv:[VER]'), 'Opera' => array('OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]', 'Opera [VER]'), 'UC Browser' => 'UC Browser[VER]', //UC 'QQBrowser' => array('MQQBrowser/[VER]','TencentTraveler/[VER]'), //QQ 'MicroMessenger'=> 'MicroMessenger/[VER]', //微信 'baiduboxapp' => 'baiduboxapp/[VER]', //百度盒子 'baidubrowser' => 'baidubrowser/[VER]', //百度 'Safari' => array('Version/[VER]', 'Safari/[VER]' ), //Mac OS X中的浏览器 'NokiaBrowser' => 'NokiaBrowser/[VER]', //诺基亚 // OS 'iOS' => '\bi?OS\b [VER][ ;]{1}', 'BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'), //黑莓手机 'Windows Phone OS' => array( 'Windows Phone OS [VER]', 'Windows Phone [VER]'), 'Windows Phone' => 'Windows Phone [VER]', 'Windows NT' => 'Windows NT [VER]', 'Windows' => 'Windows NT [VER]', 'SymbianOS' => array('SymbianOS/[VER]', 'Symbian/[VER]'), //塞班系统 'webOS' => array('webOS/[VER]', 'hpwOS/[VER];'), //LG 'Mac OS X' => 'MAC OS X [VER]', //苹果系统 'BlackBerry OS' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'), 'Android' => 'Android [VER]', 'Chrome OS' => 'CrOS x86_64 [VER]', ); /** * 获取客户端游览器 * @param $userAgent $_SERVER['HTTP_USER_AGENT'] * @param bool $isReTurnVersion //是否一起返回版本号 * @return string (类型 + 版本号) * @author 2016-01-23 */ public static function getBrowser($userAgent,$isReTurnVersion = false) { if(empty($userAgent)) { return ''; } $clientBrowser = ''; foreach((array)self::$browsers as $key => $browser) { if(self::match($browser,$userAgent)) { $clientBrowser = $key; break; } } if($isReTurnVersion && $clientBrowser) { $clientBrowser .= ' '.self::getVersion($clientBrowser,$userAgent); } return $clientBrowser; } /** * 获取客户端操作系统 * @param $userAgent * @param bool $isReTurnVersion //是否一起返回版本号 * @return string * @author 2016-01-23 */ public static function getPlatForm($userAgent,$isReTurnVersion = false) { if(empty($userAgent)) { return ''; } $clientPlatform = ''; foreach((array)self::$platforms as $key => $platform) { if(self::match($platform,$userAgent)) { $clientPlatform = $key; break; } } if($isReTurnVersion && $clientPlatform) { $clientPlatform .= ' '.self::getVersion($clientPlatform,$userAgent); } return $clientPlatform; } /** * 查询版本号 * @param $propertyName (操作系统名称和或游览器名称) * @see self::$versionRegexs * @param $userAgent * @return string * @author 2016-01-22 */ public static function getVersion($propertyName,$userAgent) { $verRegex = array_key_exists($propertyName,self::$versionRegexs) ? self::$versionRegexs[$propertyName] : null; if(!$verRegex) { return ''; } else { $verRegex = (array)$verRegex; } $match = self::matchVersion($verRegex,$userAgent); //开始匹配 if($match && stripos($propertyName,'window') !== false) { //windown系统版本号需要转换 return self::getWinVersion($match); } else { return str_replace('_','.',$match); } } /** * 根据匹配结果转换window系统版本号 * @param $match * @return string * @author 2016-01-22 */ protected static function getWinVersion($match) { if($match == '6.0') { return 'Vista'; } else if($match == '6.1') { return '7'; } else if($match == '6.2') { return '8'; } else if($match == '5.1') { return 'XP'; } } /** * 正则匹配 * @param array $regex * @param $userAgent * @return string * @author 2016-01-22 */ protected static function match($regex,$userAgent) { return (bool)preg_match(sprintf('#%s#is',$regex),$userAgent,$matches); } /** * 版本号正则匹配 * @param array $regexs * @param $userAgent * @return string * @author 2016-01-22 */ protected static function matchVersion($regexs,$userAgent) { foreach((array)$regexs as $regex) { $regex = str_replace('[VER]','([\w\.]+)', $regex); $match = (bool)preg_match(sprintf('#%s#is',$regex),$userAgent,$matches); if($match) { return $matches[1]; } } return ''; } }
thinkphp3.2里面引用
上面代码保存文件名clientUtil.php,路径\ThinkPHP\Library\Vendor\clientUtil\clientUtil.php
在自定义函数中引用\Apps\Common\Common\function.php
<?php include VENDOR_PATH."clientUtil/clientUtil.php"; // import("Vendor.clientUtil.clientUtil"); // 文件名必须保存成clientUtil.class.php /** * 获取客户端游览器 * @param $userAgent $_SERVER['HTTP_USER_AGENT'] * @param bool $isReTurnVersion //是否一起返回版本号 * @return string (类型 + 版本号) * @author 2016-01-23 */ function getBrowser($userAgent,$isReTurnVersion = false){ $c = new clientUtil; $resp = $c->getBrowser($userAgent,$isReTurnVersion); return $resp; } /** * 获取客户端操作系统 * @param $userAgent * @param bool $isReTurnVersion //是否一起返回版本号 * @return string * @author 2016-01-23 */ function getPlatForm($userAgent,$isReTurnVersion = false) { // include VENDOR_PATH."clientUtil/clientUtil.php"; $c = new clientUtil; $resp = $c->getPlatForm($userAgent,$isReTurnVersion); return $resp; }
赏
相关推荐
php实现ZIP压缩文件解压缩,中文乱码解决方法(重要)
直接上代码,具体代码里面都有注释。直接中文压缩文件解压到中文文件夹。
<?php
// 需开启配置 php_zip.dll
// phpinfo();
header("Content-type:text/html;charset=utf-8");
/*
* $filename 被解压文件名
* $path 解压...
openssl_private_decrypt解密失败
复制别人的解密程序,原程序可以解密,复制过来就不可以
一步步尝试发现,秘钥换行符有区别,
原秘钥有换行符,复制过来不知道什么时候把换行符清空了,成了一行字符串了。
评论加载中...
后一篇: PHP cookie存放数组