php 常用自定义函数

文件类

获取某个tp根目录下面的某个目录

//获取uploads 文件夹路径
function uploads_path(){
    return dirname(__DIR__).DIRECTORY_SEPARATOR.‘uploads/‘;
}

删除某个目录下的文件

/**
 * 删除某个目录下的文件
 *
 * 主要用来删除上传文件的临时文件
 */
function deleteFile($path){
    //如果是目录则继续
    if(is_dir($path)){
        //扫描一个文件夹内的所有文件夹和文件并返回数组
        $p = scandir($path);
        foreach($p as $val){
            //排除目录中的.和..
            if($val !="." && $val !=".."){
                //如果是目录则递归子目录,继续操作
                if(is_dir($path.$val)){
                    //子目录中操作删除文件夹和文件
                    deleteFile($path.$val.‘/‘);
                    //目录清空后删除空文件夹
                    @rmdir($path.$val.‘/‘);
                }else{
                    //如果是文件直接删除
                    unlink($path.$val);
                }
            }
        }
    }
}

读取文件夹下所有文件

/**
 * 读取文件夹下所有文件
 * @param $folder
 * @return mixed
 */
function scanfiles($dir){
    $arr = array();
    //列出文件下的目录
    $hander = scandir($dir);
    //遍历文件夹下所有文文件
    foreach ($hander as $v) {
        //判断文件夹下是否还有文件夹需要遍历
        if (is_dir($dir . ‘/‘ . $v) && $v != "." && $v != "..") {
            //有二级文件夹
            return false;
            //递归调用
            $arr[$v] = scanfiles($dir . ‘/‘ . $v);
        }else{
            //排除  "." " .."
            if($v != "." && $v != ".."){
                //文件存入
                $arr[]=$v;
            }
        }
    }
    return $arr;
}

随机数

任意字符随机

/**
 * 随机生成id,默认10位,不要O,o,0
 * @param integer $length 生成id的位数
 * @return string 生成的随机id
 */
function getRandom($length = 10){
    // 密码字符集,可任意添加你需要的字符
    //$chars = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789‘;
    $chars = ‘ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz123456789‘;
    $str = "";
    for ( $i = 0; $i < $length; $i++ ){
        $str .= $chars[ mt_rand(0, strlen($chars) - 1) ];
    }
    return $str ;
}

随机验证码

/**
 * @param int $len 生成随机数长度,默认为6
 * @return string
 */
//随机数
function getRandom($length = 6) {
    //取10的长度减1次方的值,例:length为6 10的5次方 100000
    $min = pow(10 , ($length - 1));
    //取10的长度次方的值,例:length为6 10的6次方减1 999999
    $max = pow(10, $length) - 1;
    //获取并返回该范围的数
    return mt_rand($min, $max);
}

字符串类

将id分割为2位一组的数组

/**
 * 将id分割为2位一组的数组
 * @param [type] $str  要分割的字符串
 * @return array
 */
function stringToArray($str = null){
    if($str === null){
        return false;
    }
    $arr = array();
    for($i = 0, $j = 0; $i < strlen($str); $i+=2,$j++){
        $arr[$j] = substr($str,$i,2);
    }
    return $arr;
}

zip压缩与解压

压缩

/**
 * 压缩文件
 * @param array $files 待压缩文件 array(‘d:/test/1.txt‘,‘d:/test/2.jpg‘);【文件地址为绝对路径】
 * @param string $filePath 输出文件路径 【绝对文件地址】 如 d:/test/new.zip
 * @return string|bool
 */
function zip($files, $filePath)
{
    //检查参数
    if (empty($files) || empty($filePath)) {
        return false;
    }

    //压缩文件
    $zip = new ZipArchive();
    $zip->open($filePath, ZipArchive::CREATE);
    foreach ($files as $key => $file) {
        //检查文件是否存在
        if (!file_exists($file)) {
            return false;
        }
        $zip->addFile($file, basename($file));
    }
    $zip->close();

    return true;
}

解压

/**
 * zip解压方法
 * @param string $filePath 压缩包所在地址 【绝对文件地址】d:/test/123.zip
 * @param string $path 解压路径 【绝对文件目录路径】d:/test
 * @return bool
 */
function unzip($filePath, $path)
{
    if (empty($path) || empty($filePath)) {
        return false;
    }

    $zip = new ZipArchive();

    if ($zip->open($filePath) === true) {
        $zip->extractTo($path);
        $zip->close();
        return true;
    } else {
        return false;
    }
}

php 常用自定义函数

上一篇:大型网站技术架构——知识总结


下一篇:.Net Core post传值方式