[Php] 从字符串中删除新行


Answers

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

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

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

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

$string = preg_replace('/\s+/', ' ', trim($string));
Question
$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 ";



PCRE正则表达式替换可以使用preg_replace完成: preg_replace() : preg_replace()

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

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




这一个也删除标签

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



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



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

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

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

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

Regex101演示




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

$str = "
put returns between paragraphs

for linebreak add 2 spaces at end

";

echo preg_replace( "/\r|\n/", "", $str );



关于什么:

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

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