$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 ";

当前回答

转义序列\R匹配通用换行符

也就是说,任何被Unicode视为换行序列的东西。这包括由\v(垂直空格)匹配的所有字符,以及多字符序列\x0D\x0A…

$string = preg_replace('/\R+/', " ", $string);

在8位非utf -8模式下\R相当于以下内容:(?>\ R \n|\n|\x0b|\f|\ R |\x85)…pcre.org

Regex101演示

其他回答

对已接受答案的一些评论:

+表示“1或更多”。我认为你没有必要重复。我认为你可以简单地写“/\s+/”。

此外,如果想要删除字符串中的第一个和最后一个空白,则添加trim。

经过这些修改,代码将是:

$string = preg_replace('/\s+/', ' ', trim($string));

可以使用preg_replace替换PCRE正则表达式: http://php.net/manual/en/function.preg-replace.php

$new_string = preg_replace("/\r\n|\r|\n/", ' ', $old_string);

将用空格替换新行或返回字符。如果你不想用任何东西替换它们,将第二个参数改为“。

只需使用preg_replace()

$string = preg_replace('~[\r\n]+~', '', $string);

你可以在这个问题上使用str_replace(),尽管代码看起来不那么干净:

$string = str_replace(array("\n", "\r"), '', $string);

在脑海中看到它

什么:

$string = trim( str_replace( PHP_EOL, ' ', $string ) );

这应该是一个相当健壮的解决方案,因为\n不会在所有系统中正确工作,如果我没有错的话…

非常简单的

$hello = "
A
B
C
";
str_replace("
", " ", $hello);
// A B C