php封装,php安装与配置

字符串数字排序处理

字段后+0 可以将MySQL字符串字段按数值排序 注意:orderByRaw是laravelphp封装的原生排序 ***

/** * @description: 字符串数字排序处理 * @Author: Quan * @param {*} * @return {*} */ public static function orderByBlock(object $sql, string $sortBy, string $sortOrder, array $numberStr = []): object { if (in_array($sortBy, $numberStr)) { $sortBy = $sortBy . '+0'; //数字字符串排序处理 return $sql->orderByRaw("$sortBy $sortOrder"); }else{ return $sql->orderBy($sortBy,$sortOrder); } }php封装

发请求 /** * @description: 发请求 * @Author: Quan * @param {*} * @return {*} */ protected function requestSend(string $method = 'GET', string $url, array $params, array $header = []): array { $requestBody = http_build_query($params); $contentLen = mb_strlen($requestBody); $headerStr = "Content-Length: {$contentLen}\r\n"; if (count($header) > 0) { foreach ($header as $k => $v) { $headerStr .= "{$k}: {$v}\r\n"; } } $http = [ 'method' => $method, 'header' => $headerStr, 'content' => $requestBody ]; $context = stream_context_create([ 'http' => $http ]); $response = file_get_contents($url, false, $context); $resArr = json_decode($response, true); if ($resArr['code'] !== 200) { throw new Exception($resArr['msg'], $resArr['code']); } return $resArr; }php封装

驼峰字符串 /** * @description: 驼峰命名转下划线命名 * @param {type} * @return {type} */ public function uncamelize(string $camelCaps, string $separator = '_'): string { return strtolower(preg_replace('/([a-z])([A-Z])/', "$1" . $separator . "$2", $camelCaps)); } /** * 下划线转驼峰 * 思路: * step1.原字符串转小写,原字符串中的分隔符用空格替换,在字符串开头加上分隔符 * step2.将字符串中每个单词的首字母转换为大写,再去空格,去字符串首部附加的分隔符. * @param $uncamelized_words * @param string $separator * @return string */ protected function camelize(string $uncamelized_words, string $separator = '_'): string { $uncamelized_words = $separator . str_replace($separator, " ", strtolower($uncamelized_words)); return ltrim(str_replace(" ", "", ucwords($uncamelized_words)), $separator); }php封装

时间戳处理 /** * @description: 人性化时间戳转换 * @Author: Quan * @param {int} $time * @return string */ public function timeTran(int $time): string { $t = time() - $time; if ($t <= 0) { return '刚刚'; //时间间隔小于1秒情况 } $f = [ '31536000' => '年', '2592000' => '个月', '604800' => '星期', '86400' => '天', '3600' => '小时', '60' => '分钟', '1' => '秒', ]; foreach ($f as $k => $v) { if (0 != $c = floor($t / (int)$k)) { return $c . $v . '前'; } } }php封装

获取字符串首字母 /** * 获取首字母 * @param string $str 汉字字符串 * @return string 首字母 */ public function getInitials(string $str): string { $resStr = '#'; if (empty($str)) { $resStr = ''; } $firstLetter = substr($str, 0, 1); $fchar = ord($firstLetter); if ($fchar >= ord('A') && $fchar <= ord('z')) { $resStr = strtoupper($firstLetter); } $s1 = iconv('UTF-8', 'gb2312', $str); $s2 = iconv('gb2312', 'UTF-8', $s1); $s = $s2 == $str ? $s1 : $str; $asc = ord(substr($s, 0, 1)) * 256 + ord(substr($s, 1, 1)) - 65536; if ($asc >= -20319 and $asc <= -20284) { $resStr = "A"; } if ($asc >= -20283 and $asc <= -19776) { $resStr = "B"; } if ($asc >= -19775 and $asc <= -19219) { $resStr = "C"; } if ($asc >= -19218 and $asc <= -18711) { $resStr = "D"; } if ($asc >= -18710 and $asc <= -18527) { $resStr = "E"; } if ($asc >= -18526 and $asc <= -18240) { $resStr = "F"; } if ($asc >= -18239 and $asc <= -17923) { $resStr = "G"; } if ($asc >= -17922 and $asc <= -17418) { $resStr = "H"; } if ($asc >= -17922 and $asc <= -17418) { $resStr = "I"; } if ($asc >= -17417 and $asc <= -16475) { $resStr = "J"; } if ($asc >= -16474 and $asc <= -16213) { $resStr = "K"; } if ($asc >= -16212 and $asc <= -15641) { $resStr = "L"; } if ($asc >= -15640 and $asc <= -15166) { $resStr = "M"; } if ($asc >= -15165 and $asc <= -14923) { $resStr = "N"; } if ($asc >= -14922 and $asc <= -14915) { $resStr = "O"; } if ($asc >= -14914 and $asc <= -14631) { $resStr = "P"; } if ($asc >= -14630 and $asc <= -14150) { $resStr = "Q"; } if ($asc >= -14149 and $asc <= -14091) { $resStr = "R"; } if ($asc >= -14090 and $asc <= -13319) { $resStr = "S"; } if ($asc >= -13318 and $asc <= -12839) { $resStr = "T"; } if ($asc >= -12838 and $asc <= -12557) { $resStr = "W"; } if ($asc >= -12556 and $asc <= -11848) { $resStr = "X"; } if ($asc >= -11847 and $asc <= -11056) { $resStr = "Y"; } if ($asc >= -11055 and $asc <= -10247) { $resStr = "Z"; } return $resStr; }php封装

二维码 /** * @description:生成二维码 需安装扩展simplesoftwareio/simple-qrcode 和 use SimpleSoftwareIO\QrCode\Facades\QrCode * @Author: Quan * @param {type} * @return: */ public function qrcodeGenerateBase64(string $content): string { if (empty($content)) { throw new Exception('请传入二维码内容'); } $orcode = base64_encode(QrCode::format('png')->margin(2)->size(200)->generate($content)); // 输出 $base64 = 'data:image/png;base64,' . $orcode; return $base64; }php封装

文件压缩 /** * @description:创建压缩文件php封装,使用前需要use ZipArchive; * @Author: Quan * @param {type} * @return: */ protected function zipCreate(array $filePaths, string $zipPath): void { $zip = new ZipArchive; $zip->open($zipPath, ZipArchive::CREATE); foreach ($filePaths as $file) { $zip->addFile($file, basename($file)); //向压缩包中添加文件 } $zip->close(); //关闭压缩包 }php封装

文件下载 /** * @description:文件下载php封装,下载完自动删除,配合前端文件流下载 * @Author: Quan * @param {type} * @return: */ protected function fileDownload(string $filePath): void { $fp = fopen($filePath, "r"); $file_size = filesize($filePath); $buffer = 1024; //设置一次读取的字节数,每读取一次,就输出数据(即返回给浏览器) $file_count = 0; //读取的总字节数 //向浏览器返回数据 while (!feof($fp) && $file_count < $file_size) { $file_con = fread($fp, $buffer); $file_count += $buffer; echo $file_con; } fclose($fp); //下载完成后删除文件 if ($file_count >= $file_size) { unlink($filePath); } }php封装

文件保存 /** * @description: 保存文件 * @Author: Quan * @param {type} * @return {type} */ protected function saveFile(string $fileName = '', string $content = '', int $mode = 0777): string { $filePath = dirname($fileName); if (!file_exists($filePath)) { mkdir($filePath, $mode, true); } $fp = fopen($fileName, "w"); fwrite($fp, $content); fclose($fp); return $fileName; } /** * @description: 第三方图片转换本地 * @Author: Quan * @param {type} * @return string */ protected function thridFileSave(string $url): string { $fileContent = file_get_contents($url); $fileName = $this->getFileName('jpg', 'avatar'); $basePath = '/uploads/user/avatar/' . date("Ymd", time()) . '/' . $fileName; //$resPath = public_path($basePath); //laravel 框架中需要加这行 $resPath = $basePath; $this->saveFile($resPath, $fileContent); return $basePath; }php封装

文件更新 /** * @description:文件更新,新文件内容更新到原文件中,并删除新文件 * @Author: Quan * @param {type} * @return: */ protected function fileUpdate(string $newPath, string $oldPath): void { $path = $newPath; $oldPath = $oldPath; if (file_exists($path) && $path !== $oldPath && $newPath) { $content = file_get_contents($path); file_put_contents($oldPath, $content); unlink($path); } }php封装

文件删除相关 /** * @description:批量删除文件 * @Author: Quan * @param {type} * @return: */ protected function deleteBatchFile(array $paths): void { array_map(function ($path) { $path = $path; file_exists($path) && is_file($path) && unlink($path); }, $paths); } /** * @description:删除单个文件 * @Author: Quan * @param {type} * @return: */ protected function deleteFile(string $path): void { file_exists($path) && is_file($path) && unlink($path); }php封装

数据处理相关 /** * treeData 生成树状数据 * @author Quan * @param array $items 原数据 * @param string $son 存放孩子节点字段名 * @param string $id 排序显示的键,一般是主键 * @param array $pid 父id * @return array 树状数据 */ protected function treeData(array $items = [], string $pid = 'parent_id', string $id = 'id', string $son = 'children'): array { $tree = []; $tmpData = []; //临时数据 foreach ($items as $item) { $tmpData[$item[$id]] = $item; } foreach ($items as $item) { if (isset($tmpData[$item[$pid]])) { $tmpData[$item[$pid]][$son][] = &$tmpData[$item[$id]]; } else { $tree[] = &$tmpData[$item[$id]]; } } unset($tmpData); return $tree; } /** * @description:过滤数组为null和''的字段,array_filter也能过滤,但其默认会把0、false这样具体的值过滤掉 * @Author: Quan * @param array $arr * @return array */ static protected function filterArray(array $arr): array { foreach ($arr as $k => $v) { if ($v === '' || $v === null) { unset($arr[$k]); } } return $arr; } /** * @description: 10进制转36进制 * @Author: Quan * @param {type} * @return: */ protected function createCode(string $number): string { static $sourceString = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, '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' ]; $num = $number; $code = ''; while ($num) { $mod = bcmod($num, '36'); $num = bcdiv($num, '36'); $code = "{$sourceString[$mod]}{$code}"; //邀请码拼接 } //判断code的长度 if (empty($code[4])) $code = str_pad($code, 5, '0', STR_PAD_LEFT); //长度不够拼接'0' return $code; } /** * @description: 删除html和空格 * @Author: Quan * @param {type} * @return: */ public function htmlTagFilter(?string $str): string { $resStr = ''; if (!empty($str)) { $tmpStr = strip_tags($str); $resStr = str_replace(array(" ", " ", " ", " ", "‌", "‍", "“", "”"), "", $tmpStr); } return $resStr; } /** * @description: 字符串截取 * @Author: Quan * @param {type} * @return: */ public function strCut(?string $str, int $startIndex, int $length, string $prefix = '...'): string { $resStr = ''; if (!empty($str)) { $resStr = mb_strlen($str) > $length ? mb_substr($str, $startIndex, $length) . $prefix : $str; } return $resStr; } /** * @description: xml 转换数组 * @Author: Quan * @param {type} * @return: */ public function xmlToArray(string $xml): array { libxml_disable_entity_loader(true); $arr = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); return $arr; } /** * @description: 号码打码 * @Author: Quan * @param {type} * @return: */ public function mobileMosaicStr(string $mobile): string { return substr($mobile, 0, 3) . '****' . substr($mobile, 7); } /** * 数组转对象 * @param Array $array * @author Quan * @return Object */ protected function arrayTransitionObject(array $array): object { if (is_array($array)) { $obj = new stdClass(); foreach ($array as $key => $val) { $obj->$key = $val; } } else { $obj = $array; } return $obj; } /** * @description: 分析枚举类型配置值 格式 a:名称1,b:名称2 * @param {str:string} * @return: */ protected function parseValue(string $str): array { $tmp = preg_split('/[,;\r\n]+/', $str); $value = []; if (strpos($str, ':')) { foreach ($tmp as $val) { list($k, $v) = explode(':', $val); $value[$k] = $v; } } else { $value = $tmp; } return $value; } /** * @description:数据分组 * @param {dataArr:需要分组的数据php封装;keyStr:分组依据} * @author Quan * @return: */ static protected function dataGroup(array $dataArr, string $keyStr): array { $newArr = []; foreach ($dataArr as $k => $val) { //数据根据日期分组 $newArr[$val[$keyStr]][] = $val; } return $newArr; }php封装

发布于 2024-09-15 12:09:18
收藏
分享
海报
0 条评论
58
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~