strrev在php 8.3中用法不变,仍按字节反转字符串;对utf-8多字节字符(如中文)不安全,易乱码,需用preg_split('//u')配合array_reverse实现安全反转。

strrev 在 PHP 8.3 中的用法和之前版本完全一致,没有变化。它仍然是一个内置函数,专门用于**反转字符串**,不区分 PHP 版本(包括 8.3),只要传入的是字符串,就原样倒序返回。
基本用法:直接传入字符串
最常见也最简单的用法是直接给 strrev() 传一个字符串,它会返回字符顺序完全颠倒的新字符串:
- echo strrev("hello"); // 输出 "olleh"
- echo strrev("PHP 8.3"); // 输出 "3.8 PHP"
- $name = "张三"; echo strrev($name); // 输出 "三张"(UTF-8 多字节字符会被按字节反转,可能乱码)
注意:strrev 不支持 UTF-8 多字节字符安全反转
PHP 的 strrev 是按字节操作的,不是按字符。对中文、日文、emoji 等 UTF-8 编码的多字节字符,直接使用会导致字节错位,输出乱码或异常:
- strrev("你好") → 可能输出类似 "好你" 的乱码(取决于具体字节排列)
- 如需正确反转中文等 Unicode 字符串,应改用 mb_strrev()(需自行定义,因 PHP 未内置)或组合 mb_substr() + 循环,或使用 preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY) 拆成字符再 array_reverse() 后 implode()。
其他实用小提示
- 如果传入空字符串 "",返回仍是空字符串;
- 如果传入 null 或未定义变量,会触发 Warning 并返回空字符串(建议先判断);
- 数字会自动转为字符串处理:strrev(123) 返回 "321";
- 数组、对象等非字符串类型会报 TypeError(PHP 8+ 类型严格性增强,不再静默转字符串)。
简单安全的中文反转示例(兼容 PHP 8.3)
可这样写一个基础的多字节安全反转函数:
- function mb_strrev($str) { return implode('', array_reverse(preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY))); }
- echo mb_strrev("你好世界"); // 正确输出 "界世好你"
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











