从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演示