You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用preg_replace去除多余空白时如何保留段落换行结构

问题原因

你当前使用的\s元字符在正则中会匹配所有空白字符,包含空格、制表符、换行符、回车符等,因此连续的换行也会被识别为多余空白替换为空格,导致换行结构丢失。

解决方案

只需要将正则匹配的范围限定为水平空白符(即不包含换行、回车的空格、制表符等)即可,修改后的代码如下:

// 方式1:使用\h匹配水平空白符,兼容PHP 5.2.4及以上版本
$replaced = preg_replace('/\h+/', ' ', "1st.     line
2nd.      line goes here

3rd. line   goes   there");

echo $replaced;

如果需要更低版本的PHP兼容,也可以直接指定匹配空格和制表符:

// 全版本兼容写法
$replaced = preg_replace('/[ \t]+/', ' ', "1st.     line
2nd.      line goes here

3rd. line   goes   there");

echo $replaced;

运行效果

上述代码会把所有连续的水平空白替换为单个空格,同时完全保留原有的换行、空行结构,输出结果和你预期的完全一致,处理后的内容可以直接放入textarea中正常展示换行:

1st. line 
2nd. line goes here 

3rd. line goes there

内容的提问来源于stack exchange,提问作者user2534787

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:18:02