php函数怎么piso反转字符串_用strrev实现倒序排列【方法】-php教程

strrev仅支持单字节ASCII字符串反转,多字节字符(如中文)需用mb_substr循环或PHP 8.3+的mb_strrev;使用mb_*函数必须显式指定UTF-8编码,否则仍会乱码。

strrev 函数能直接反转字符串,但不支持多字节字符(如中文)

strrev 是 PHP 内置函数,作用就是把传入的字符串按字节倒序排列。它快、简单、无需额外扩展,但只适合 ASCII 场景。
比如 strrev("abc") 返回 "cba",没问题;但 strrev("你好") 会返回乱码——因为 UTF-8 中一个汉字占 3 字节,strrev 把字节顺序全打乱了,不是“字符级”反转。

中文或 Unicode 字符串必须用 mb_substr + 循环拼接

要安全反转含中文、日文、emoji 的字符串,得先用 mb_strlen 获取字符数,再用 mb_substr 从末尾逐个截取字符:

$str = "Hello 世界";
$len = mb_strlen($str, 'UTF-8');
$result = '';
for ($i = $len - 1; $i >= 0; $i--) {
    $result .= mb_substr($str, $i, 1, 'UTF-8');
}
// $result === "界世 olleH"
  • 必须显式指定编码(如 'UTF-8'),否则 mb_* 函数可能退化为单字节行为
  • 不能用 str_split 或 preg_split('//u') 后 array_reverse,前者在某些 PHP 版本中对 emoji 分割不稳定,后者正则开销大且易漏边界

PHP 8.3+ 可用 strrev 的多字节版本:mb_strrev(需启用 mbstring)

PHP 8.3 新增了 mb_strrev,是真正意义上的多字节安全反转函数,但注意:

  • 它不是所有环境都可用——必须 PHP ≥ 8.3 且 mbstring 扩展已加载
  • 调用时仍需指定编码,例如 mb_strrev("?a", 'UTF-8')
  • 低于 8.3 的项目无法使用,别在生产环境硬切,容易报 Call to undefined function mb_strrev()

别用 array_reverse + str_split 做“伪多字节反转”

常见错误写法:implode('', array_reverse(str_split($str))) —— 这在中文里完全失效。
str_split 按字节切分,"你好"(6 字节)会被切成 6 个乱码字节片段,再反转拼回去仍是乱码。
同理,preg_match_all('//u', $str, $matches) 虽然能匹配 Unicode 字符,但正则引擎在处理超长字符串或混合 emoji 时有性能抖动,且代码可读性差。

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » php函数怎么piso反转字符串_用strrev实现倒序排列【方法】-php教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4001297+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4001297+
  • 本周更新: 0+
  • 最后更新: 2026-03-16