繁体   English   中英

用一个换行符替换多个换行符

[英]Replace multiple new lines with a single newline

如何用一个换行符替换多个连续的换行符。 最多可以有 20 个相邻的换行符。 例如

James said hello\n\n\n\n Test\n Test two\n\n

试试这个:

$str = "Hello\n\n\n\n\nWorld\n\n\nHow\nAre\n\nYou?";
$str = preg_replace("/\n+/", "\n", $str);
print($str);

完善Marc B的答案:

$fixed_text  = preg_replace("\n(\s*\n)+", "\n", $text_to_fix);

它应与初始换行符匹配,然后与任意数量的空白组中的至少一个匹配,后跟一个换行符,并将它们全部替换为一个换行符。

$fixed_text = preg_replace("\n+", "\n", $text_to_fix);

假设连续的换行符是真正连续的,并且它们之间没有任何空格(制表符,空格,回车符等),则应该这样做。

$str = 'James said hello\n\n\n\n Test\n Test two\n\n';
echo preg_replace('{(\\\n)\1+}','$1',$str);

在正则表达式中:

  • +<\/code>表示“一个或多个前面的表达式”<\/li>
  • {2,}<\/code>表示“两个或多个前面的表达式”<\/li><\/ul>

    对于此问题中的要求,将单个\\n<\/code>替换为单个 \\ \\n<\/code>是没有意义的,因为该子字符串没有任何变化。 换句话说, \/\\n+\/<\/code>只是在做不必要的工作。

    使用两个或更多的范围量词更有意义。

    代码:(演示<\/a>)

    输出:

    在其他情况下,用\\R<\/code>替换可能来自不同操作系统的换行符序列可能是有利的。 此元字符匹配\\r\\n<\/code>或\\n<\/code> 。 这是一个修改后的模式,它将用服务器指定的换行符序列替换两个或多个换行符序列:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM