美文网首页
php公共方法集合

php公共方法集合

作者: 七百年前 | 来源:发表于2019-05-16 14:35 被阅读0次
function v($msg)
{
    echo '<pre>';
    var_dump($msg);
    exit;
}

function Pe($msg)
{
    if (is_array($msg)) {
        if (count($msg) < 2) {
            echo json_encode($msg, JSON_UNESCAPED_UNICODE);
        } else {
            foreach ($msg as $key => $value) {
                if (is_array($value)) {
                    $msg[$key] = json_encode($value, JSON_UNESCAPED_UNICODE);
                }
            }
            echo implode(' *** ', $msg);
        }
    } else {
        echo $msg;
    }
    echo '<br><br>';
}

/**
 * 缩略图
 * @param type $imagePath
 */
function PimageSL($imagePath, $xx = 100, $yy = 100)
{
    $filePath = base_path() . "/public";
    $rootPath = $filePath . $imagePath;

    if (file_exists($rootPath) && $imagePath) {

        $s_image = $imagePath . "_w{$xx}_h{$yy}.jpg";

        if (!file_exists($filePath . $s_image)) {

            //获取图片信息
            list($imgw, $imgh, $imgt, $attr) = getimagesize($rootPath);

            if ($imgw && $imgh) {

                if ($imgw > 0 && $imgh > 0) {
                    //计算缩小的比例,目标最长边缩至150
                    $percent = $imgw > $imgh ? ($xx / $imgw) : ($yy / $imgh); //以最长边作为缩放参考
                    if ($percent < 1) {
                        //计算缩略图的新尺寸
                        $new_width  = floor($imgw * $percent);
                        $new_height = floor($imgh * $percent);
                    } else {
                        //如果原图尺寸小于 150x150 直接输出原图尺寸
                        $new_width  = $imgw;
                        $new_height = $imgh;
                    }
                    $thumb = imagecreatetruecolor($new_width, $new_height);

                    //读取图片
                    switch ($imgt) {
                        //判断格式,图像类型,但缩略图输出的都是jpg..参考下文
                        case 1:
                            $orgimg = imagecreatefromgif($rootPath);
                            break;
                        case 2:
                            $orgimg = imagecreatefromjpeg($rootPath);
                            break;
                        case 3:
                            $orgimg = imagecreatefrompng($rootPath);
                            break;
                    }
                    //imagecopyresampled(缩略图片资源, 源图片资源, dx, dy, sx,sy, 新图像宽度, 新图像高度, 源图像宽度, 源图像高度);
                    imagecopyresampled($thumb, $orgimg, 0, 0, 0, 0, $new_width, $new_height, $imgw, $imgh); //缩放核心函数

                    imagejpeg($thumb, $filePath . $s_image, 90); //输出图像
                    //销毁资源
                    imagedestroy($thumb);
                    imagedestroy($orgimg);
                }
            }
        }
        return $s_image;
    } else {
        return $imagePath;
    }
}

/**
 * 图片缩放
 * @param type $imagePath
 * @param type $width
 * @param type $height
 * @param type $pz
 */
function PimageCut($imagePath, $width = 100, $height = 100, $pz = 90)
{
    //系统根目录
    $filePath     = base_path() . "/public";
    $oldImagePath = $filePath . $imagePath;
    if (file_exists($oldImagePath) && $imagePath) {
        //图片新名字
        $newImageName = "{$imagePath}_{$width}_{$height}.jpg";
        //图片新的根路径
        $newFilePath  = $filePath . $newImageName;
        if (!file_exists($newFilePath)) {
            //获取图片信息
            list($imgW, $imgH, $imgType, $attr) = getimagesize($oldImagePath);
            if ($imgW && $imgH) {
                //读取图片
                switch ($imgType) {
                    //判断格式,图像类型,但缩略图输出的都是jpg..参考下文
                    case 1:
                        $oldImageObj = imagecreatefromgif($oldImagePath);
                        break;
                    case 2:
                        $oldImageObj = imagecreatefromjpeg($oldImagePath);
                        break;
                    case 3:
                        $oldImageObj = imagecreatefrompng($oldImagePath);
                        break;
                }
                //计算缩小的比例,目标最长边缩至150
                $percent = $imgW > $imgH ? ($width / $imgW) : ($height / $imgH); //以最长边作为缩放参考
                if ($percent < 1) {
                    //计算缩略图的新尺寸
                    $new_width   = floor($imgW * $percent);
                    $new_height  = floor($imgH * $percent);
                    $newImageObj = imagecreatetruecolor($new_width, $new_height);
                    //imagecopyresampled(缩略图片资源, 源图片资源, dx, dy, sx,sy, 新图像宽度, 新图像高度, 源图像宽度, 源图像高度);
                    imagecopyresampled($newImageObj, $oldImageObj, 0, 0, 0, 0, $new_width, $new_height, $imgW, $imgH); //缩放核心函数
                    imagedestroy($oldImageObj);
                    $start_x     = $new_width > $width ? (($new_width - $width) / 2) : 0;
                    $start_y     = $new_width > $width ? (($new_height - $height) / 2) : 0;
                } else {
                    $newImageObj = $oldImageObj;
                    $start_x     = $imgW > $width ? (($imgW - $width) / 2) : 0;
                    $start_y     = $imgH > $width ? (($imgH - $height) / 2) : 0;
                }
                $imageCutObj = imagecreatetruecolor($width, $height);
                imagecopy($imageCutObj, $newImageObj, $start_x, $start_y, 0, 0, $width, $height);
                //保存图像
                imagejpeg($imageCutObj, $newFilePath, $pz);
                //销毁资源
                imagedestroy($newImageObj);
                imagedestroy($imageCutObj);
            }
        }
        echo $newImageName;
    } else {
        echo $imagePath;
    }
}

/**
 * 发布时间方案确认
 * @param type $param
 * @return string
 */
function PtimeCode($param, $type = 0)
{
    if ($type == 1) {
        $param = strtotime($param);
    }
    $now_time = time();
    if ($now_time - $param < 60 * 3) {
        $putTime = '刚刚';
    } else if ($now_time - $param < 60 * 60) {
        $putTime = ceil(($now_time - $param) / 60) . '分钟前';
    } else if ($now_time - $param < 60 * 60 * 24) {
        $putTime = ceil(($now_time - $param) / 60 / 60) . '小时前';
    } else if ($now_time - $param < 60 * 60 * 24 * 7) {
        $putTime = ceil(($now_time - $param) / 60 / 60 / 24) . '天前';
    } else {
//        $putTime = ceil(($now_time - $param) / 60 / 60 / 24 / 30) . '月前';
        $putTime = date('Y-m-d', $param);
    }

    return $putTime;
}

/**
 * ******************
 * 1、写入内容到文件,追加内容到文件
 * 2、打开并读取文件内容
 * *******************
 */
function saveLog($msg, $case = 'default')
{
    $path = base_path() . "/storage/mylogs/{$case}/";

    if (!is_dir($path)) {
        mkdir($path, 0777, true);
    }
    $filename = $path . date('Ymd') . '.txt';
    $content  = date("Y-m-d H:i:s") . " ==> " . $msg . "\r\n\r\n";
    file_put_contents($filename, $content, FILE_APPEND);
}

/**
 * 公用的方法  返回json数据,进行信息的提示
 * @param $code 状态码
 * @param string $message 提示信息
 * @param array $data 返回数据
 * 1
 */
function showMsg($code, $message = '', $data = array())
{
    $result = array(
        'code' => $code,
        'msg'  => $message,
        'data' => $data,
    );
    exit(json_encode($result));
}

//加密函数
function lockToken($txt = '', $key = 'bfyj')
{
    if ($txt) {
        $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
        $nh    = rand(0, 64);
        $ch    = $chars[$nh];
        $mdKey = md5($key . $ch);
        $mdKey = substr($mdKey, $nh % 8, $nh % 8 + 7);
        $txt   = base64_encode($txt);
        $tmp   = '';
        $i     = 0;
        $j     = 0;
        $k     = 0;
        for ($i = 0; $i < strlen($txt); $i++) {
            $k   = $k == strlen($mdKey) ? 0 : $k;
            $j   = ($nh + strpos($chars, $txt[$i]) + ord($mdKey[$k++])) % 64;
            $tmp .= $chars[$j];
        }
        return urlencode($ch . $tmp);
    } else {
        return false;
    }
}

//解密函数
function unlockToken($txt = '', $key = 'bfyj')
{
    if ($txt) {
        $txt   = urldecode($txt);
        $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
        $ch    = $txt[0];
        $nh    = strpos($chars, $ch);
        $mdKey = md5($key . $ch);
        $mdKey = substr($mdKey, $nh % 8, $nh % 8 + 7);
        $txt   = substr($txt, 1);
        $tmp   = '';
        $i     = 0;
        $j     = 0;
        $k     = 0;
        for ($i = 0; $i < strlen($txt); $i++) {
            $k = $k == strlen($mdKey) ? 0 : $k;
            $j = strpos($chars, $txt[$i]) - $nh - ord($mdKey[$k++]);
            while ($j < 0) {
                $j += 64;
            }

            $tmp .= $chars[$j];
        }
        return base64_decode($tmp);
    } else {
        return false;
    }
}

/**
 * @Author    Afree
 * @DateTime  2018-04-18
 * @copyright [获取设计订单号]
 * @license   [license]
 * @version   [version]
 * @param     [type]      $user_id [description]
 * @return    [type]               [description]
 */
function pbGetOrderSN($user_id)
{
    $user_uid = 10000000 + $user_id;
    $nowTime  = time();
    $date     = date('Ymd', $nowTime);
    $timestr  = substr($nowTime, -4);
    $rand     = rand(10, 99);
    $userstr  = substr($user_uid, -4);
    return $date . $timestr . $rand . $userstr;
}

/**
 * @Author    Afree
 * @DateTime  2018-04-18
 * @copyright [获取工厂传单订单号]
 * @license   [license]
 * @version   [version]
 * @param     [type]      $user_id [description]
 * @return    [type]               [description]
 */
function pbGetFactorySN($user_id)
{
    $user_uid = 10000000 + $user_id;
    $nowTime  = time();
    $date     = date('Ymd', $nowTime);
    $rand     = rand(10, 99);
    $timestr  = substr($nowTime, -2);
    $userstr  = substr($user_uid, -2);
    return $date . $userstr . $timestr . $rand;
}

/**
 * 酷家乐api curl组合
 * @param $url
 * @param array $data
 * @return mixed
 * 模拟发送get  和   post 请求
 */
function pbKapiCurlAsk($url, $data = '', $type = "GET")
{
    set_time_limit(0); //执行时间无限
    ini_set('memory_limit', '-1'); //内存无限
    $ch   = curl_init();
    curl_setopt($ch, CURLOPT_TIMEOUT, 600);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $type = strtolower($type);
    switch ($type) {
        case 'post':
            $header = array(
                // 'Content-Type: text/plain;charset=utf-8',
                'Content-Type: application/json;charset=utf-8',
                "X-AjaxPro-Method:ShowList",
            );
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            //post请求配置
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            break;
        case 'text':
            $header = array(
                'Content-Type: text/plain;charset=utf-8',
                // 'Content-Type: application/json;charset=utf-8',
                "X-AjaxPro-Method:ShowList",
            );
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            //post请求配置
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            break;
        default:
            $header = array(
                'Content-Type: text/plain;charset=utf-8',
            );
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            break;
    }

    $result = curl_exec($ch);
    curl_close($ch);
    return json_decode($result, true);
}

/**
 * 清空文件夹函数和清空文件夹后删除空文件夹函数的处理
 * @param type $path
 */
function pbDelDirFile($path)
{
    //如果是目录则继续
    if (is_dir($path)) {
        //扫描一个文件夹内的所有文件夹和文件并返回数组
        $p = scandir($path);
        foreach ($p as $val) {
            //排除目录中的.和..
            if ($val != "." && $val != "..") {
                //如果是目录则递归子目录,继续操作
                if (is_dir($path . $val)) {
                    //子目录中操作删除文件夹和文件
                    pbDelDirFile($path . $val . '/');
                    //目录清空后删除空文件夹
                    @rmdir($path . $val . '/');
                } else {
                    //如果是文件直接删除
                    unlink($path . $val);
                }
            }
        }
    }
}

/**
 * 获取文章摘要
 * @param type $data
 * @param type $cut
 * @param type $str
 * @return type
 */
function PcutArticle($data, $cut = 140, $str = "....")
{
    $data    = strip_tags($data); //去除html标记
    $pattern = "/&[a-zA-Z]+;/"; //去除特殊符号
    $data    = preg_replace($pattern, '', $data);
    if (!is_numeric($cut)) {
        return $data;
    }

    if ($cut > 0) {
        $data = mb_strimwidth($data, 0, $cut, $str);
    }

    return $data;
}

/**
 *  作用:将xml转为array
 */
function PxmlToArray($xml)
{
//将XML转为array
    libxml_disable_entity_loader(true);
    $values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
    return $values;
}

/**
 *  作用:array转xml
 */
function ParrayToXml($arr)
{
    $xml = "<xml>";
    foreach ($arr as $key => $val) {
        if (is_numeric($val)) {
            $xml .= "<" . $key . ">" . $val . "</" . $key . ">";
        } else {
            $xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">";
        }
    }
    $xml .= "</xml>";
    return $xml;
}

/**
 * 随机生成安全符号 登录校验
 * @param int $length
 * @return string
 */
function pbGetRandStr($length = 4)
{
    // 密码字符集,可任意添加你需要的字符
    $chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
        'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
        't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D',
        'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
        'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');

    // 在 $chars 中随机取 $length 个数组元素键名
    $keys     = array_rand($chars, $length);
    $password = '';
    for ($i = 0; $i < $length; $i++) {
        // 将 $length 个数组元素连接成字符串
        $password .= $chars[$keys[$i]];
    }
    return $password;
}

/**
 * 过滤接收数据
 * @param  [array] $data   [数据]
 * @param  [boole] $unset [是否删除空值]
 * @return [array]        [description]
 */
function dataFilterNull($data, $unset = false)
{
    foreach ($data as $key => &$val) {
        if (is_array($val)) {
            $val = array_filter($val);
        } else {
            # 值为空,是否删除空值
            if ($val == null && !$unset) {
                return false;
            } elseif ($val == null && $unset) {
                unset($data[$key]);
            }
        }
    }
    return $data;
}

/**
 * 根据字段重新组合数组(二维)
 * @param type $array 二维数组
 * @param type $field 字段
 * @return type
 */
function pdFieldRegroupArr($array, $field)
{
    $list = $temp = array();
    if (!empty($array)) {
        # 提取字段
        foreach ($array as $v) {
            $v      = $v[$field];
            $temp[] = $v;
        }
        # 去除重复字段
        $temp = array_unique($temp);
        // 组合
        foreach ($temp as $k => $v) {
            foreach ($array as $kk => $vv) {
                // var_dump($vv['date'], $v);
                if ($vv['date'] == $v) {
                    $list[$v][] = $vv;
                }
            }
        }
    }
    return $list;
}

相关文章

网友评论

      本文标题:php公共方法集合

      本文链接:https://www.haomeiwen.com/subject/dyriaqtx.html