|
| 1 | +# hejunjie/utils |
| 2 | + |
| 3 | +一个零碎但实用的 PHP 工具函数集合库。 |
| 4 | + |
| 5 | +> 🌱 很多实现原理都不复杂,但总在项目里反复写,写多了心态有点崩。 |
| 6 | +> 干脆集中起来,不重复造轮子,省心省力。 |
| 7 | +
|
| 8 | +## 安装方式 |
| 9 | + |
| 10 | +```bash |
| 11 | +composer require hejunjie/utils |
| 12 | +``` |
| 13 | + |
| 14 | +## 用途 & 初衷 |
| 15 | +这是一个典型的「开发者懒癌工具库」。 |
| 16 | + |
| 17 | +在日常项目中,你可能也经常遇到这些情况: |
| 18 | + |
| 19 | +一个数组操作写了无数次; |
| 20 | + |
| 21 | +文件大小格式化总要搜 StackOverflow; |
| 22 | + |
| 23 | +想判断字符串是不是 JSON、是不是手机号、是不是邮箱,结果各种复制粘贴; |
| 24 | + |
| 25 | +项目变了,原来的工具类又得重新封装一遍... |
| 26 | + |
| 27 | +所以,我把这些经常用、常见又简单的小方法统一整理了一下,写成这个工具库。不求高级,不追花哨,目标就是:简单易用,解放双手。 |
| 28 | + |
| 29 | +## 当前支持的方法(更新中) |
| 30 | + |
| 31 | +## 当前支持的方法列表 |
| 32 | + |
| 33 | +### 字符串操作 |
| 34 | + |
| 35 | +| 方法 | 说明 | |
| 36 | +| :------------------------------ | :------------------------------- | |
| 37 | +| Str::containsAny() | 检查字符串中是否存在数组中的内容 | |
| 38 | +| Str::padString() | 补充特定字符串,使其达到指定长度 | |
| 39 | +| Str::replaceFirst() | 替换字符串中第一次出现的搜索值 | |
| 40 | +| Str::generateRandomString() | 生成随机字符串 | |
| 41 | +| Str::getRandomSurname() | 获取随机姓氏 | |
| 42 | +| Str::truncateString() | 截断字符串 | |
| 43 | +| Str::maskString() | 字符串掩码 | |
| 44 | +| Str::removeWhitespace() | 移除字符串中的所有空白字符 | |
| 45 | +| Str::stringEncrypt() | 字符串加密(AES-128-CBC) | |
| 46 | +| Str::stringDecrypt() | 字符串解密(AES-128-CBC) | |
| 47 | +| Str::formatDurationFromSeconds() | 根据秒数转换为可读性时间 | |
| 48 | + |
| 49 | +### 数组操作 |
| 50 | + |
| 51 | +| 方法 | 说明 | |
| 52 | +| :----------------------------- | :------------------------------- | |
| 53 | +| Arr::arrayIntersect() | 获取两个数组的交集 | |
| 54 | +| Arr::sortByField() | 根据二维数组中的指定字段排序 | |
| 55 | +| Arr::removeDuplicatesByField() | 根据二维数组中指定字段去重 | |
| 56 | +| Arr::groupByField() | 根据二维数组中的指定字段进行分组 | |
| 57 | +| Arr::arrayToCsv() | 数组转换为 CSV 格式的字符串 | |
| 58 | +| Arr::xmlParse() | xml解析为数组 | |
| 59 | +| Arr::arrayToXml() | 数组转换为xml | |
| 60 | + |
| 61 | +### 文件操作 |
| 62 | + |
| 63 | +| 方法 | 说明 | |
| 64 | +| :--------------------------------------- | :------------------------- | |
| 65 | +| FileUtils::readFile() | 读取文件内容 | |
| 66 | +| FileUtils::writeToFile() | 将内容写入文件 | |
| 67 | +| FileUtils::getFileExtension() | 获取文件扩展名 | |
| 68 | +| FileUtils::joinPaths() | 拼接多个路径 | |
| 69 | +| FileUtils::getFileNameWithoutExtension() | 获取文件名(不带扩展名) | |
| 70 | +| FileUtils::fileDelete() | 删除文件或目录 | |
| 71 | +| FileUtils::writeUniqueLinesToFile() | 获取文件中的唯一行(去重) | |
| 72 | +| FileUtils::getCommonLinesFromFiles() | 从多个文件中获取交集行 | |
| 73 | +| FileUtils::extractColumnFromCsvFiles() | 从多个csv文件中快速提取列 | |
| 74 | + |
| 75 | + |
| 76 | +### 网络请求操作 |
| 77 | + |
| 78 | +| 方法 | 说明 | |
| 79 | +| :---------------------------- | :----------------------- | |
| 80 | +| HttpClient::sendGetRequest() | 使用 cURL 发送 GET 请求 | |
| 81 | +| HttpClient::sendPostRequest() | 使用 cURL 发送 POST 请求 | |
| 82 | + |
| 83 | + |
| 84 | +### 图片操作 |
| 85 | + |
| 86 | +| 方法 | 说明 | |
| 87 | +| :-------------------------- | :----------------------------------------------------- | |
| 88 | +| Img::downloadImageFromUrl() | 从 URL 下载图片 | |
| 89 | +| Img::imageToBase64() | 将图片转换为 Base64 字符串 | |
| 90 | +| Img::base64ToImage() | 将 Base64 字符串保存为图片 | |
| 91 | +| Img::compressImage() | 压缩图片到指定大小(单位 KB),支持多种格式转换为 JPEG | |
| 92 | +| Img::resizeImage() | 调整图片分辨率,保持宽高比 | |
| 93 | + |
| 94 | +## 🔧 更多工具包(可独立使用,也可统一安装) |
| 95 | + |
| 96 | +本项目最初是从 [hejunjie/tools](https://github.com/zxc7563598/php-tools) 拆分而来,如果你想一次性安装所有功能组件,也可以使用统一包: |
| 97 | + |
| 98 | +```bash |
| 99 | +composer require hejunjie/tools |
| 100 | +``` |
| 101 | + |
| 102 | +当然你也可以按需选择安装以下功能模块: |
| 103 | + |
| 104 | +[hejunjie/cache](https://github.com/zxc7563598/php-cache) - 多层缓存系统,基于装饰器模式。 |
| 105 | + |
| 106 | +[hejunjie/china-division](https://github.com/zxc7563598/php-china-division) - 中国省市区划分数据包。 |
| 107 | + |
| 108 | +[hejunjie/error-log](https://github.com/zxc7563598/php-error-log) - 责任链日志上报系统。 |
| 109 | + |
| 110 | +[hejunjie/mobile-locator](https://github.com/zxc7563598/php-mobile-locator) - 国内手机号归属地 & 运营商识别。 |
| 111 | + |
| 112 | +👀 所有包都遵循「轻量实用、解放双手」的原则,能单独用,也能组合用,自由度高,欢迎 star 🌟 或提 issue。 |
| 113 | + |
| 114 | +--- |
| 115 | + |
| 116 | +该库后续将持续更新,添加更多实用功能。欢迎大家提供建议和反馈,我会根据大家的意见实现新的功能,共同提升开发效率。 |
| 117 | + |
| 118 | + |
| 119 | + |
| 120 | + |
| 121 | + |
| 122 | + |
| 123 | + |
| 124 | + |
0 commit comments