php字符串单词反转需分词、逐词反转、再拼接:基础用explode+strrev+implode;保留空白格式需preg_split捕获分隔符;utf-8字符须用mb_函数或preg_match_all处理。

PHP 中实现字符串中单词反转(即保持单词顺序不变,但每个单词内部字符倒序),关键在于分词、逐个反转、再拼接。不需要正则也能高效完成,核心是用空格分割和 strrev 函数。
基础方法:按空格分割 + 逐词反转
适用于只含英文单词和单空格的干净字符串。使用 explode() 拆分,strrev() 反转每个单词,再用 implode() 连接:
$str = "Hello World PHP";
$words = explode(' ', $str);
$reversedWords = array_map('strrev', $words);
$result = implode(' ', $reversedWords); // "olleH dlroW PHP"
保留原始空白格式(多空格、制表符、换行)
若原字符串含连续空格或混合空白符,直接 explode(' ') 会丢失结构。此时应使用 preg_split() 配合 PREG_SPLIT_DELIM_CAPTURE 保留分隔符:
- 用正则
/(\s+)/切分,捕获空白符作为独立元素 - 遍历结果,对非空白项调用 strrev,空白项原样保留
- 最后 implode 合并
一行流处理(适合简单场景)
可链式写成简洁表达式,提高可读性(PHP 7.4+ 支持箭头函数,但 array_map 更通用):
本文档主要讲述的是JSON.NET 简单的使用;JSON.NET使用来将.NET中的对象转换为JSON字符串(序列化),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?)。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
立即学习“PHP免费学习笔记(深入)”;
$result = implode(' ', array_map('strrev', explode(' ', $str)));
注意:该写法不处理首尾空格或中间多余空格,如需健壮性,建议先 trim 或用正则预处理。
中文或混合字符需额外考虑
strrev 按字节反转,对 UTF-8 多字节字符(如中文、emoji)会乱码。此时应改用 mb_ 系列函数:
- 用 mb_split('/\s+/', $str, 'UTF-8') 分割(需启用 mbstring)
- 自定义反转函数,用 mb_substr 和 mb_strlen 逐字符倒序拼接
- 或使用 preg_match_all('/./u', $word, $matches) 获取 Unicode 字符数组再 array_reverse










