PHP作为一门广泛应用于Web开发领域的编程语言,其内置函数库的丰富性与实用性直接影响开发者效率与代码质量。PHP 100个常用函数覆盖了字符串处理、数组操作、文件系统、数学计算、正则表达式、会话控制、错误处理及数据库交互等核心场景,是开发者解决日常问题的利器。这些函数不仅封装了底层逻辑,更通过简洁的调用方式实现高效开发,例如字符串截取可通过substr完成,数组合并依赖array_merge,而文件读取则通过file_get_contents快速实现。掌握这些函数能显著提升代码可读性与执行效率,尤其在Laravel、Symfony等框架中,函数组合使用更是构建复杂功能的基础。
一、字符串处理函数
字符串操作是PHP开发中最基础的需求,以下表格对比了6个高频函数:
函数名 | 功能 | 参数说明 | 返回值 | 典型场景 |
---|---|---|---|---|
strlen | 计算字符串长度 | 目标字符串 | 整数(字节数) | 验证用户名长度、统计文本字符数 |
substr | 截取子串 | 原字符串、起始位置、长度 | 子字符串 | 提取订单号前缀、截取摘要内容 |
str_replace | 字符串替换 | 搜索值、替换值、原字符串 | 替换后的字符串 | 敏感词过滤、模板变量替换 |
strpos | 查找首次出现位置 | 原字符串、搜索值 | 整数(索引)/false | 验证文件后缀、检测关键词 |
trim | 去除两端空白 | 目标字符串 | 处理后字符串 | 清理用户输入、规范化数据 |
strtolower | 转换为小写 | 目标字符串 | 小写字符串 | 用户名统一存储、敏感词比对 |
字符串函数常与正则表达式结合使用,例如preg_match用于验证邮箱格式,而addslashes则针对SQL注入防护。值得注意的是,PHP 8+新增了str_contains函数,可直接判断子串是否存在,简化了传统strpos的逻辑。
二、数组操作函数
数组是PHP的核心数据结构,以下对比展示了7个关键函数:
函数名 | 功能 | 参数特性 | 适用场景 |
---|---|---|---|
array_merge | 合并一个或多个数组 | 参数为数组类型 | 合并配置数组、合并用户权限列表 |
array_unique | 去除重复值 | 保留键名(可选) | 去重日志数据、统计唯一IP |
array_column | 提取列数据 | 输入数组、列键名 | 从关联数组中提取特定字段 |
array_filter | 过滤数组元素 | 回调函数定义规则 | 筛选有效订单、过滤空值 |
array_map | 映射处理每个元素 | 回调函数加工元素 | 批量格式化数据、统一大小写 |
array_key_exists | 检查键是否存在 | 数组、键名 | 验证配置项是否存在 |
array_slice | 提取数组片段 | 起始位置、长度 | 分页显示数据、截取部分配置 |
数组函数与foreach循环结合可处理多维数据,例如array_column常用于从数据库查询结果中提取单列。需注意,PHP 7.4+引入的array_is_list可快速判断数组是否为索引数组,而array_intersect_key则用于键名级别的交集计算。
三、文件与目录操作函数
文件系统交互是Web应用的必备能力,以下为8个核心函数:
函数名 | 功能分类 | IO模式 | 典型用途 |
---|---|---|---|
file_get_contents | 文件读取 | 二进制/文本模式 | 读取配置文件、获取远程API数据 |
file_put_contents | 文件写入 | 追加/覆盖模式 | 写入日志文件、缓存数据持久化 |
fopen | 文件句柄操作 | 读写/只读模式 | 大文件分块处理、流式数据解析 |
mkdir | 目录创建 | 递归创建(可选) | 初始化项目目录结构 |
rmdir | 目录删除 | 仅空目录 | 清理临时文件夹 |
is_dir | 路径判断 | 布尔返回 | 验证上传路径合法性 |
scandir | 目录遍历 | 返回数组 | 列出目录下所有文件、生成缩略图列表 |
unlink | 文件删除 | 仅文件 | 清理过期缓存文件 |
文件操作需特别注意权限问题,例如is_writable函数可预先判断写入权限。对于大文件处理,建议使用fread配合feof逐行读取,避免内存溢出。PHP 8新增的diriterator类提供了面向对象的目录遍历方式,增强了代码可维护性。
四、数学与日期函数
数值计算与时间处理是后端开发的核心需求,以下表格展示关键函数:
函数类别 | 代表函数 | 核心功能 | 精度控制 |
---|---|---|---|
基础运算 | abs/round/max | 绝对值/四舍五入/最大值 | round第二个参数指定小数位 |
随机数 | rand/mt_rand | 生成整数/更安全的随机数 | mt_rand支持种子配置 |
日期处理 | time/date | 当前时间戳/格式化日期 | date第二个参数指定格式 |
时间差 | strtotime/diff | 时间戳转换/计算差异 | diff返回DateInterval对象 |
浮点运算 | number_format | 格式化数字 | 支持千位分隔符与小数位 |
进制转换 | bindec/decoct | 二进制转十进制/十进制转八进制 | 自动处理前缀(如0b) |
time()与microtime()的差异在于后者包含微秒级精度,适用于性能计时。日期格式化推荐使用DateTime::createFromFormat替代传统date函数,尤其在处理多时区场景时。对于货币计算,应优先使用BCMath扩展的bcadd等函数避免浮点误差。
五、正则表达式函数
正则表达式是文本匹配与提取的重要工具,以下为关键函数对比:
匹配模式 | 函数名 | 返回值类型 | 性能特征 |
---|---|---|---|
简单匹配 | ereg | 数组/false | 已废弃(PHP 7.3+) |
Perl兼容 | preg_match | 1/0或匹配次数 | 支持分组与修饰符 |
全局匹配 | preg_match_all | 匹配数组 | 消耗内存较大 |
替换操作 | preg_replace | 替换后字符串 | 支持回调替换 |
分割字符串 | preg_split | 分割后数组 | 可设置分隔符次数 |
模式修正 | preg_quote | 转义后的字符串 | 防止特殊字符干扰 |
匹配验证 | preg_match_full | 布尔值(PHP 8.3+) | 严格匹配整个字符串 |
使用正则表达式时需注意修饰符的选择,例如i忽略大小写、m启用多行模式。对于复杂匹配,推荐使用(?(condition)yes|no)>条件分支语法。PHP 8.3新增的preg_replace_callback_array
六、错误控制与异常处理函数
错误处理机制直接影响程序健壮性,以下为关键函数对比:
处理层级 |
---|
发表评论