PHP 8.0 中字符串反转最简洁高效的方式是使用内置函数 strrev(),它原生支持 Unicode(需正确设置 UTF-8 编码),性能优于手动循环;对含 emoji 或复杂 Unicode 的场景,应改用 mb_strrev() 等多字节安全方案。

PHP 8.0 中实现字符串反转,最简洁、高效的方式是直接使用内置函数 strrev(),它原生支持 Unicode(配合正确的字符编码设置),且性能远超手动循环。下面给出标准、可靠、符合现代 PHP 实践的实现方式,并附带常见注意事项。
✅ 推荐写法:用 strrev() —— 简洁安全
PHP 8.0 已全面支持 UTF-8 字符串处理(前提是源文件保存为 UTF-8 编码,且未启用过时的 mbstring.func_overload)。对普通 ASCII 和大部分常见中文、英文、数字、符号,strrev() 完全可用:
<?php $str = "Hello 世界123"; echo strrev($str); // 输出:321界世olleH ?>
⚠️ 注意:中文等多字节字符需确保环境正确
strrev() 按字节反转,不是按字符。若字符串含 UTF-8 多字节字符(如中文),而运行环境未正确识别 UTF-8 编码,可能产生乱码。请确认以下三点:
- PHP 文件本身以 UTF-8 无 BOM 格式保存
- Web 服务器或 CLI 环境默认字符集为 UTF-8(如 Apache 的
AddDefaultCharset UTF-8) - 数据库/输入来源也是 UTF-8(如 MySQL 连接设置
charset=utf8mb4)
? 替代方案:用 mb_substr 手动反转(兼容复杂 Unicode)
若需 100% 确保 Unicode 字符(如 emoji、生僻汉字、组合字符)正确反转,应使用多字节函数逐字符处理:
立即学习“PHP免费学习笔记(深入)”;
<?php
function mb_strrev(string $str): string {
$len = mb_strlen($str, 'UTF-8');
$reversed = '';
for ($i = $len - 1; $i >= 0; $i--) {
$reversed .= mb_substr($str, $i, 1, 'UTF-8');
}
return $reversed;
}
<p>echo mb_strrev("Hello ? 你好"); // 输出:好你 ? olleH
?>? 小结:怎么选?
- 日常开发、确定输入为 ASCII 或常规中英文——直接用
strrev()(快、简洁、PHP 8.0 完全支持) - 处理用户输入、含 emoji、古汉字、越南文等复杂 Unicode 场景——用
mb_strrev()自定义函数 - 避免使用
array_reverse(str_split($str))或implode('', array_reverse(...)),它们在多字节场景下会破坏字符结构



















