从string中删除新行

$string = " put returns between paragraphs for linebreak add 2 spaces at end "; 

想要从string中删除所有新行。

我有这个正则expression式,它可以捕获所有这些,问题是我不知道应该使用哪个函数。

 /\r\n|\r|\n/ 

$string应该成为:

 $string = "put returns between paragraphs for linebreak add 2 spaces at end "; 

你必须谨慎的双重换行,这将导致双重空间。 使用这个非常有效的正则expression式

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

多个空格和换行符被replace为一个空格。

编辑:正如其他人已经指出,这个解决scheme有问题匹配单词之间的换行符。 这个例子中不存在,但可以很容易地看到这种情况会发生。 另一种方法是执行以下操作:

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

对接受的答案有几点意见:

+表示“1或更多”。 我不认为你需要重复\s 。 我想你可以简单地写'/\s+/'

另外,如果要删除string中第一个和最后一个空格,请添加trim

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

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

只要使用preg_replace()

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

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

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

在ideone上观看

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

您应该使用str_replace来提高速度并对数组使用双引号

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

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

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

将用空格replace新行或返回字符。 如果你不想replace它们,把第二个参数改为''

用这个:

用一个空stringreplace一系列换行符:

 $string = preg_replace("/[\\n\\r]+/", "", $string); 

或者你可能想用一个空格replace换行符:

 $string = preg_replace("/[\\n\\r]+/", " ", $string); 

关于什么:

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

这应该是一个非常强大的解决scheme,因为\ n在所有系统中都无法正常工作,如果我没有错的话…

我不确定这是否对已经提交的答案有任何价值,但我也可以发布。

 // Create an array with the values you want to replace $searches = array("\r", "\n", "\r\n"); // Replace the line breaks with a space str_replace($searches, "", $string); // Replace multiple spaces with one $output = preg_replace('!\s+!', ' ', $string); 

这是我将使用的模式

 $string = preg_replace('@[\s]{2,}@',' ',$string); 

这一个也删除标签

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

你可以尝试下面的代码将保留任何你的文本中的空白和新行。

 $str = " put returns between paragraphs for linebreak add 2 spaces at end "; echo preg_replace( "/\r|\n/", "", $str ); 

我很惊讶地看到每个人都知道正则expression式。

在PHP中换行符是

 $str = preg_replace('/\r?\n$/', ' ', $str); 

在Perl中

 $str =~ s/\r?\n$/ /g; 

意思是在行的末尾replace任何换行符(为了效率) – 可选地在前面加一个回车符 – 用空格。

\ n或\ 015是换行符。 \ r或\ 012是回车。 ? 在正则expression式意味着匹配前一个字符的1或零。 $ in regex意思是匹配行尾。

原始和最好的正则expression式的参考perldoc perlre,每个编码器应该知道这个文件很好: http ://perldoc.perl.org/perlre.html注意并不是所有的语言都支持所有的function。

也许这个作品:

 $str='\n'; echo str_replace('\n','',$str); 

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

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

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

在8位非UTF-8模式中, \R等同于以下内容: (?>\r\n|\n|\x0b|\f|\r|\x85)pcre.org

Regex101演示