$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 ";
$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 ";
当前回答
您可以尝试下面的代码将保留文本中的任何空白和新行。
$str = "
put returns between paragraphs
for linebreak add 2 spaces at end
";
echo preg_replace( "/\r|\n/", "", $str );
其他回答
我惊讶地发现,每个人对正则表达式知之甚少。
php中的换行符是
$str = preg_replace('/\r?\n$/', ' ', $str);
在perl中
$str =~ s/\r?\n$/ /g;
意思是替换行末的任何换行符(为了效率)-可选在回车符之前-用空格。
\n或\015是换行符。 \r或\012是回车。 ? 在正则表达式中,表示匹配前一个字符的1或0。 在正则表达式中,$表示匹配行尾。
最初最好的正则表达式参考是perldoc perlre,每个程序员都应该非常了解这个doc: http://perldoc.perl.org/perlre.html 注意,并非所有语言都支持所有特性。
什么:
$string = trim( str_replace( PHP_EOL, ' ', $string ) );
这应该是一个相当健壮的解决方案,因为\n不会在所有系统中正确工作,如果我没有错的话…
这就是我要用的模式
$string = preg_replace('@[\s]{2,}@',' ',$string);
您可以尝试下面的代码将保留文本中的任何空白和新行。
$str = "
put returns between paragraphs
for linebreak add 2 spaces at end
";
echo preg_replace( "/\r|\n/", "", $str );
对已接受答案的一些评论:
+表示“1或更多”。我认为你没有必要重复。我认为你可以简单地写“/\s+/”。
此外,如果想要删除字符串中的第一个和最后一个空白,则添加trim。
经过这些修改,代码将是:
$string = preg_replace('/\s+/', ' ', trim($string));