PHP常用方法代码片断

6 篇文章 1 订阅
6 篇文章 0 订阅

判断是否为移动端浏览器

/**
 * 判断是否移动端浏览器
 * @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;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值