$string = "
put returns between paragraphs
for linebreak add 2 spaces at end
";
想要从字符串中删除所有新行 .
我有这个正则表达式,它可以捕获所有这些,问题是我不知道我应该使用哪个函数 .
/\r\n|\r|\n/
$string
应该成为:
$string = "put returns between paragraphs for linebreak add 2 spaces at end ";
17 回答
也许这有效:
这是我会使用的模式
这个也删除了标签
关于:
这应该是一个非常强大的解决方案,因为如果我没有错,\ n在所有系统中都无法正常工作......
您可以尝试下面的代码将保留文本中的任何空格和新行 .
只需使用preg_replace()
虽然代码看起来不干净,但你可以在这个上使用str_replace():
在ideone上看到它
您应该使用str_replace来提高其速度并使用带数组的双引号
PCRE正则表达式替换可以使用preg_replace来完成:http://php.net/manual/en/function.preg-replace.php
将用空格替换新行或返回字符 . 如果您不想要任何替换它们,请将第二个参数更改为
''
.我不确定这对已提交的答案是否有任何 Value ,但我也可以发布它 .
Escape sequence \R匹配通用换行符
Regex101 Demo
用这个:
用空字符串替换一系列换行符:
或者你可能想用一个空格替换换行符:
您必须小心双线换行,这会导致双倍空格 . 使用这个非常有效的正则表达式
多个空格和换行符将替换为单个空格 .
Edit: 正如其他人所指出的,这个解决方案在单词之间存在匹配单个换行符的问题 . 这在示例中不存在,但可以很容易地看出这种情况是如何发生的 . 另一种方法是执行以下操作:
关于接受的答案的一些评论:
+
表示"1 or more" . 我认为你不需要重复\s
. 我想你可以简单地写'/\s+/'
.此外,如果要首先删除字符串中的空格和最后一个空格,请添加
trim
.通过这些修改,代码将是:
我很惊讶地看到每个人都对正则表达式知之甚少 .
在PHP中删除换行符是
在perl
含义替换行末尾的任何换行符(为了提高效率) - 可选地在回车符之前 - 带有空格 .
\ n或\ 015是换行符 . \ r \ \ 012是回车 . ?在正则表达式中意味着匹配前一个字符的1或0 . $ in regex表示匹配行尾 .
原始和最好的正则表达式引用是perldoc perlre,每个编码器都应该非常清楚这个文档:http://perldoc.perl.org/perlre.html注意并非所有语言都支持所有功能 .
这下面的代码工作所有文本请使用它:
文本中的换行符通常表示为:
\r\n - 在Windows计算机上
\r - 在Apple电脑上
\n - 在Linux上