判断是否为移动端浏览器
/**
* 判断是否移动端浏览器
* @return boolean 返回true是移动端,返回false是电脑端
*/
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;
}
/**
* 判断是否微信浏览器
* @return boolean 返回true是微信,返回false不是微信
*/
function isWeixin() {
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
return true;
} else {
return false;
}
}
========================
根据需求自动裁剪图片(基于thinkphp)
/**
* 输出图片。根据需求自动裁剪图片
*
* @param unknown $file
* @param number $width
* @param number $height
* @param string $def
* @return unknown|mixed 使用例子:< img src="{:img('/wyzxqy/Tools/Upload/../../Upload/image/20150529/20150529103500_39141.jpg',90,90)}" />
*/
function img($file, $width = 200, $height = 200, $def = '') {
$root=dirname( $_SERVER['DOCUMENT_ROOT']."/aa")."/" ;
if (preg_match ( '/^http:\/\//', $file ) || preg_match ( '/^https:\/\//', $file )) {
// 如果是远程文件
$virFloder = substr ( $_SERVER ['SCRIPT_NAME'], 0, strrpos ( $_SERVER ['SCRIPT_NAME'], '/' ) );
$basePath = $virFloder . '/Resource/img/temp/';
if (! is_readable ( $root . $basePath )) { // 判断文件夹是否存在,不存在就创建
is_file ( $root . $basePath ) or mkdir ( $root . $basePath, 0777, true );
// var_dump(mkdir ( $root.$basePath, 0777 ));
}
//下载远程图片
$disFile=$file;
$fileName=md5($file).'.jpg';
$saveFile=$root.$basePath.$fileName;
$file=$basePath.$fileName;
//判断远程文件是否存在
if (! file_exists ( $root . $file )) { // 判断原文件是否存在,不存在直接返回。
$content = file_get_contents($disFile);
file_put_contents($saveFile, $content);
}
}
if(empty($file)){
return $def;
}
$realFile=$root.$file;
//获得文件扩展名
$temp_arr = explode(".", $file);
$file_ext = array_pop($temp_arr);
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext);
$baseFile = basename ( $file ); // 找到文件名
$basePath = str_replace ( $baseFile, "", $file ) . "temp/"; // 找到目录
$baseFile = str_replace ( ".", "", $baseFile ); // 替换掉“.”
$baseFile .= $width . "x" . $height . ".jpg";
if (! is_readable ( $root.$basePath )) { // 判断文件夹是否存在,不存在就创建
is_file ( $root.$basePath ) or mkdir ( $root.$basePath, 0777 );
}
$baseFile = $basePath . $baseFile;
if (! file_exists ($root.$file )) { // 判断原文件是否存在,不存在直接返回。
if (empty ( $def )) { // 如果没有默认图片
return $file;
} else {
// trace($def,"def");
return $def;
}
}
//后缀名
if($file_ext=="gif"){
return $file;
}
if (! file_exists ( $root.$baseFile )) { // 判断文件是否存在
$image = new \Think\Image ();
$image->open ( $root.$file ); // 生成一个缩放后填充大小的缩略图并保存
$image->thumb ( $width, $height,\Think\Image::IMAGE_THUMB_CENTER )->save ( $root.$baseFile ); // 生成缩略图
}
$str2 = substr ( $baseFile, 0, 2 ); // 取前两个字符串
return $baseFile;
}