| 分类 | 函数名 | PHP版本 | 功能说明 | 用法示例 |
|---|---|---|---|---|
| 字符串处理 | str_contains() | 8.0 | 检查字符串是否包含指定子串(区分大小写),返回布尔值 | $str = "Hello PHP8";<br>var_dump(str_contains($str, "PHP8")); // bool(true) var_dump(str_contains($str, "php8")); // bool(false) |
| 字符串处理 | str_starts_with() | 8.0 | 检查字符串是否以指定子串开头(区分大小写),返回布尔值 | $str = "2025-12-11";<br>var_dump(str_starts_with($str, "2025")); // bool(true) var_dump(str_starts_with($str, "2024")); // bool(false) |
| 字符串处理 | str_ends_with() | 8.0 | 检查字符串是否以指定子串结尾(区分大小写),返回布尔值 | $str = "test.txt";<br>var_dump(str_ends_with($str, ".txt")); // bool(true) var_dump(str_ends_with($str, ".php")); // bool(false) |
| 字符串处理 | mb_str_split() | 8.0 | 多字节安全的字符串分割,支持指定分割长度(解决str_split多字节乱码) | $str = "你好PHP8";<br>print_r(mb_str_split($str)); // [0]=>你 [1]=>好 [2]=>P [3]=>H [4]=>P [5]=>8 print_r(mb_str_split($str, 2)); // [0]=>你好 [1]=>PH [2]=>P8 |
| 字符串处理 | strlcpy() | 8.1 | 安全的字符串拷贝(限制长度,含终止符),返回源字符串总长度 | $dest = ''; $src = "Hello World"; $len = strlcpy($dest, $src, 6);<br>echo $dest; // Hello echo $len; // 11 |
| 字符串处理 | mb_str_pad() | 8.3 | 多字节安全的字符串填充(解决str_pad多字节长度计算错误) | $str = "你好";<br>echo mb_str_pad($str, 5, "-", STR_PAD_RIGHT); // 你好--- |
| 数组处理 | array_is_list() | 8.1 | 检查数组是否为“列表”(索引从0开始、连续递增的整数索引),返回布尔值 | $list = [1,2,3]; $notList = [0=>1,2=>3]; var_dump(array_is_list($list)); // bool(true)<br>var_dump(array_is_list($notList)); // bool(false) |
| 数组处理 | array_find() | 8.3 | 返回数组中第一个满足回调条件的元素,无则返回null | $nums = [1,2,3,4,5];<br>$even = array_find($nums, fn($n) => $n % 2 === 0);<br>echo $even; // 2 |
| 数组处理 | array_find_key() | 8.3 | 返回数组中第一个满足回调条件的键,无则返回null | $users = ['a'=>18, 'b'=>22, 'c'=>19];<br>$key = array_find_key($users, fn($age) => $age > 20);<br>echo $key; // b |
| 数组处理 | array_any() | 8.3 | 检查数组是否存在至少一个满足回调条件的元素,返回布尔值 | $nums = [1,3,5];<br>var_dump(array_any($nums, fn($n) => $n%2===0)); // bool(false) $nums[]=8; var_dump(array_any($nums, fn($n) => $n%2===0)); // bool(true) |
| 数组处理 | array_all() | 8.3 | 检查数组所有元素是否都满足回调条件,返回布尔值 | $nums = [2,4,6];<br>var_dump(array_all($nums, fn($n) => $n%2===0)); // bool(true) $nums[]=9; var_dump(array_all($nums, fn($n) => $n%2===0)); // bool(false) |
| 数值处理 | fdiv() | 8.0 | 浮点数除法(优雅处理除0场景,返回INF/-INF/NaN,替代普通除法) | var_dump(fdiv(10,2)); // float(5) var_dump(fdiv(10,0)); // float(INF) var_dump(fdiv(0,0)); // float(NAN) |
| 数值处理 | enum_exists() | 8.1 | 检查枚举类型是否已定义(适配8.1新增的枚举特性) | enum Status { case Success; case Error; } var_dump(enum_exists('Status')); // bool(true) var_dump(enum_exists('NonExist')); // bool(false) |
| 日期时间处理 | DateTimeInterface::format_iso8601() | 8.2 | 标准化输出ISO 8601格式日期,支持指定毫秒精度 | $dt = new DateTime('2025-12-11 10:00:00', new DateTimeZone('Asia/Shanghai'));<br>echo $dt->format_iso8601(); // 2025-12-11T10:00:00+08:00 echo $dt->format_iso8601(3); // 2025-12-11T10:00:00.000+08:00 |
| 对象/类型处理 | get_debug_type() | 8.0 | 更精准的变量类型获取(比gettype友好,支持枚举/对象等) | $obj = new stdClass(); enum E { case A; }<br>echo get_debug_type("test"); // string<br>echo get_debug_type($obj); // stdClass echo get_debug_type(E::A); // E |
| 对象/类型处理 | ReflectionClass::isReadOnly() | 8.2 | 反射检查类是否为只读类(适配8.2新增的readonly类特性) | readonly class User { public string $name; }<br>$ref = new ReflectionClass(User::class); var_dump($ref->isReadOnly()); // bool(true) |
| JSON处理 | json_validate() | 8.3 | 高效验证JSON字符串有效性(无需解码,性能优于json_decode) | $valid = '{"name":"PHP8"}'; $invalid = '{"name":"PHP8"'; var_dump(json_validate($valid)); // bool(true)<br>var_dump(json_validate($invalid)); // bool(false) |
| 正则表达式 | preg_last_error_msg() | 8.0 | 返回正则操作的可读错误信息(替代preg_last_error的数值码) | preg_match('/[a-z/', 'test'); // 语法错误 echo preg_last_error_msg(); // "missing terminating ] for character class" |
| 字节处理 | bytes_format() | 8.3 | 将字节数格式化为易读单位(B/KB/MB/GB等),支持指定小数位数 | echo bytes_format(1024); // 1.00 KB echo bytes_format(1048576); // 1.00 MB echo bytes_format(1500, 0); // 2 KB |
关键说明:
- 版本兼容性:表格中函数均为PHP8.0及以上新增/增强,部分函数(如
array_find)仅在PHP8.3+可用,使用前需确认运行环境版本; - 多字节支持:
mb_*开头的函数解决了中文等多字节字符的处理问题,推荐优先使用; - 性能优化:如
json_validate比json_decode验证JSON更高效(无需解析整个字符串); - 类型安全:
get_debug_type、array_is_list等函数提升了PHP的类型判断精准度,适配8.0+的类型强化特性。
评论 (0)