求助:PHP实现文本多余空格及段落间过量换行的处理方案
PHP处理用户提交内容的多余空格与换行方案
以下是针对用户提交内容中多余空格、过量换行问题的PHP解决方案,可实现段落间保留最多一个空行、单词间仅保留单个空格的效果:
实现代码
// 统一所有系统的换行符为\n $string = preg_replace('/\R/', "\n", $string); // 去除字符串首尾的空白字符(含换行、空格) $string = trim($string); // 将连续2个及以上的换行替换为2个换行(保留单个空行) $string = preg_replace('/\n{2,}/', "\n\n", $string); // 替换行内连续空格为单个空格,保留换行符 $string = preg_replace('/[^\S\n]+/', ' ', $string);
代码说明
- 统一换行符:使用
/\R/正则匹配所有Unicode换行符(涵盖Windows的\r\n、Linux的\n、旧Mac的\r),统一转换为\n,避免跨系统换行格式混乱。 - 去除首尾空白:
trim()函数清除字符串开头和结尾的多余换行、空格等空白内容,避免无效的首尾空行。 - 压缩段落空行:通过
/\n{2,}/匹配连续2个及以上的换行,替换为2个换行(即单个空行),确保段落间仅保留一个分隔空行。 - 清理行内空格:
[^\S\n]+匹配除换行符外的所有连续空白字符(空格、制表符等),替换为单个空格,既清理多余空格又保留行内的正常换行。
效果验证
针对示例输入:
$string = " first sentence has w aaa yy too many excess spaces and too many lines between paragraphs. ";
处理后输出:
$string = "first sentence has w aaa yy too many excess spaces and too many lines between paragraphs.";
内容的提问来源于stack exchange,提问作者peppy
相关产品推荐
相关产品推荐

