[英]Remove new lines from string and replace with one empty space
$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 = trim(preg_replace('/\s\s+/', ' ', $string));
多个空格和换行符被替换为一个空格。
编辑:正如其他人指出的那样,此解决方案存在匹配单词之间的单个换行符的问题。 这在示例中不存在,但可以很容易地看到这种情况是如何发生的。 另一种方法是执行以下操作:
$string = trim(preg_replace('/\s+/', ' ', $string));
对接受的答案的一些评论:
+
表示“1 个或多个”。 我认为您不需要重复\\s
。 我认为你可以简单地写'/\\s+/'
。
此外,如果要删除字符串中的第一个和最后一个空格,请添加trim
。
通过这些修改,代码将是:
$string = preg_replace('/\s+/', ' ', trim($string));
只需使用preg_replace()
$string = preg_replace('~[\r\n]+~', '', $string);
你可以在这个上使用str_replace()
,尽管代码看起来不那么干净:
$string = str_replace(array("\n", "\r"), '', $string);
$string = str_replace(array("\n", "\r"), ' ', $string);
您应该使用 str_replace 来提高速度并在数组中使用双引号
str_replace(array("\r\n","\r"),"",$string);
我不确定这对已经提交的答案是否有任何价值,但我也可以发布它。
// 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);
PCRE 正则表达式替换可以使用 preg_replace 完成: http : //php.net/manual/en/function.preg-replace.php
$new_string = preg_replace("/\r\n|\r|\n/", ' ', $old_string);
将用空格替换新行或返回字符。 如果您不想替换它们,请将第二个参数更改为''
。
使用这个:
用空字符串替换一系列换行符:
$string = preg_replace("/[\\n\\r]+/", "", $string);
或者您可能想用一个空格替换换行符:
$string = preg_replace("/[\\n\\r]+/", " ", $string);
我很惊讶地看到每个人都对正则表达式知之甚少。
在 php 中去除换行符是
$str = preg_replace('/\r?\n$/', ' ', $str);
在 perl 中
$str =~ s/\r?\n$/ /g;
意思是用空格替换行尾的任何换行符(为了效率) - 可选地前面有一个回车符 - 。
\\n 或 \\015 是换行符。 \\r 或 \\012 是回车。 ? 在正则表达式中表示匹配前一个字符的 1 或 0。 正则表达式中的 $ 表示匹配行尾。
原始和最好的正则表达式参考是 perldoc perlre,每个编码人员都应该非常了解这个文档: http ://perldoc.perl.org/perlre.html 注意并非所有功能都支持所有语言。
文本中的换行符通常表示为:
\\r\\n - 在 Windows 计算机上
\\r - 在苹果电脑上
\\n - 在 Linux 上
//Removes all 3 types of line breaks
$string = str_replace("\r", "", $string);
$string = str_replace("\n", "", $string);
关于:
$string = trim( str_replace( PHP_EOL, ' ', $string ) );
这应该是一个非常强大的解决方案,因为如果我没有错,\\n 不能在所有系统中正常工作......
这是我会使用的模式
$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 );
也许这有效:
$str='\n';
echo str_replace('\n','',$str);
许多这些解决方案对我不起作用。 不过,这确实奏效了:-
$svgxml = preg_replace("/(*BSR_ANYCRLF)\R/",'',$svgxml);
这是参考:- PCRE 和新行
很简单
$hello = "
A
B
C
";
str_replace("
", " ", $hello);
// A B C
下面的代码适用于所有文本,请使用它:
$des = str_replace('\n',' ',$des);
$des = str_replace('\r',' ',$des);
您可以删除新行和多个空格。
$pattern = '~[\r\n\s?]+~';
$name="test1 /
test1";
$name = preg_replace( $pattern, "$1 $2",$name);
echo $name;
使用上述解决方案的组合,这一行对我有用
$string = trim(str_replace('\n', '', (str_replace('\r', '', $string))));
它删除了 '\\r' 和 '\\n'。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.