$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 ";
当前回答
可以使用preg_replace替换PCRE正则表达式: http://php.net/manual/en/function.preg-replace.php
$new_string = preg_replace("/\r\n|\r|\n/", ' ', $old_string);
将用空格替换新行或返回字符。如果你不想用任何东西替换它们,将第二个参数改为“。
其他回答
什么:
$string = trim( str_replace( PHP_EOL, ' ', $string ) );
这应该是一个相当健壮的解决方案,因为\n不会在所有系统中正确工作,如果我没有错的话…
我不确定这是否对已经提交的答案有任何价值,但我也可以张贴它。
// Create an array with the values you want to replace
$searches = array("\r", "\n", "\r\n");
// Replace the line breaks with a space
$string = str_replace($searches, " ", $string);
// Replace multiple spaces with one
$output = preg_replace('!\s+!', ' ', $string);
你必须小心使用双换行符,这会导致双空格。使用这个非常有效的正则表达式:
$string = trim(preg_replace('/\s\s+/', ' ', $string));
多个空格和换行符被替换为单个空格。
编辑:正如其他人指出的那样,这个解决方案在单词之间匹配单个换行有问题。这在示例中没有出现,但是可以很容易地看到这种情况是如何发生的。另一种选择是这样做:
$string = trim(preg_replace('/\s+/', ' ', $string));
对已接受答案的一些评论:
+表示“1或更多”。我认为你没有必要重复。我认为你可以简单地写“/\s+/”。
此外,如果想要删除字符串中的第一个和最后一个空白,则添加trim。
经过这些修改,代码将是:
$string = preg_replace('/\s+/', ' ', trim($string));
$string = str_replace(array("\n", "\r"), ' ', $string);