首页 文章

从字符串中删除新行

提问于
浏览
239
$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 ";

17 回答

  • 158

    也许这有效:

    $str='\n';
    echo str_replace('\n','',$str);
    
  • 1

    这是我会使用的模式

    $string = preg_replace('@[\s]{2,}@',' ',$string);
    
  • 4

    这个也删除了标签

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

    关于:

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

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

  • 0

    您可以尝试下面的代码将保留文本中的任何空格和新行 .

    $str = "
    put returns between paragraphs
    
    for linebreak add 2 spaces at end
    
    ";
    
    echo preg_replace( "/\r|\n/", "", $str );
    
  • 0

    只需使用preg_replace()

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

    虽然代码看起来不干净,但你可以在这个上使用str_replace()

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

    ideone上看到它

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

    您应该使用str_replace来提高其速度并使用带数组的双引号

    str_replace(array("\r\n","\r"),"",$string);
    
  • 1

    PCRE正则表达式替换可以使用preg_replace来完成:http://php.net/manual/en/function.preg-replace.php

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

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

  • 478

    我不确定这对已提交的答案是否有任何 Value ,但我也可以发布它 .

    // 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);
    
  • 12

    Escape sequence \R匹配通用换行符

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

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

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

    Regex101 Demo

  • 61

    用这个:

    用空字符串替换一系列换行符:

    $string = preg_replace("/[\\n\\r]+/", "", $string);
    

    或者你可能想用一个空格替换换行符:

    $string = preg_replace("/[\\n\\r]+/", " ", $string);
    
  • 16

    您必须小心双线换行,这会导致双倍空格 . 使用这个非常有效的正则表达式

    $string = trim(preg_replace('/\s\s+/', ' ', $string));
    

    多个空格和换行符将替换为单个空格 .

    Edit: 正如其他人所指出的,这个解决方案在单词之间存在匹配单个换行符的问题 . 这在示例中不存在,但可以很容易地看出这种情况是如何发生的 . 另一种方法是执行以下操作:

    $string = trim(preg_replace('/\s+/', ' ', $string));
    
  • 6

    关于接受的答案的一些评论:

    + 表示"1 or more" . 我认为你不需要重复 \s . 我想你可以简单地写 '/\s+/' .

    此外,如果要首先删除字符串中的空格和最后一个空格,请添加 trim .

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

    $string = preg_replace('/\s+/', ' ', trim($string));
    
  • 1

    我很惊讶地看到每个人都对正则表达式知之甚少 .

    在PHP中删除换行符是

    $str = preg_replace('/\r?\n$/', ' ', $str);
    

    在perl

    $str =~ s/\r?\n$/ /g;
    

    含义替换行末尾的任何换行符(为了提高效率) - 可选地在回车符之前 - 带有空格 .

    \ n或\ 015是换行符 . \ r \ \ 012是回车 . ?在正则表达式中意味着匹配前一个字符的1或0 . $ in regex表示匹配行尾 .

    原始和最好的正则表达式引用是perldoc perlre,每个编码器都应该非常清楚这个文档:http://perldoc.perl.org/perlre.html注意并非所有语言都支持所有功能 .

  • 2

    这下面的代码工作所有文本请使用它:

    $des = str_replace('\n',' ',$des);
    $des = str_replace('\r',' ',$des);
    
  • 0

    文本中的换行符通常表示为:

    \r\n - 在Windows计算机上

    \r - 在Apple电脑上

    \n - 在Linux上

    //Removes all 3 types of line breaks
    
    $string = str_replace("\r", "", $string);
    
    $string = str_replace("\n", "", $string);
    

相关问题