如何从php字符串中删除新行和返回?

Yen*_*ens 39 php string newline

php变量包含以下字符串:

<p>text</p>
<p>text2</p>
<ul>
<li>item1</li>
<li>item2</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想删除此字符串中的所有新行字符,因此字符串将如下所示:

<p>text</p><p>text2><ul><li>item1</li><li>item2</li></ul>
Run Code Online (Sandbox Code Playgroud)

我试过以下但没有成功:

str_replace('\n', '', $str);
str_replace('\r', '', $str);
str_replace('\r\n\', '', $str);
Run Code Online (Sandbox Code Playgroud)

谁知道如何解决这个问题?

cod*_*ict 92

你需要\n用双引号括起来.
在单引号内,它被视为2个字符,'\'后跟'n'

你需要:

$str = str_replace("\n", '', $str);
Run Code Online (Sandbox Code Playgroud)

更好的选择是使用PHP_EOL:

$str = str_replace(PHP_EOL, '', $str);
Run Code Online (Sandbox Code Playgroud)

  • 实际上,`PHP_EOL`不起作用.应该是`["\ r \n","\ r","\n"]`. (6认同)
  • @Col:为什么不呢? (3认同)
  • @JustCarty这可能适用于您的特定情况,但它假定`$ str`的​​值是在与运行脚本的系统相同的平台上创建的.如果你混合windows和unix,那你将度过糟糕的一天. (3认同)
  • PHP_EOL确实不起作用.PHP将无法在str_replace中正确找到它们.为了正确显示html,我必须这样做:将\ r \n替换为<br>(这适用于Windows下的CRLF),然后将\n替换为<br>(这适用于Linux下的LF),最后替换\ r \n用空字符串(这不应该是什么意思) (2认同)
  • 你真的需要在`["\ r \n","\ r","\n"]中使用``\ r \n"``` 它已经全局删除了`\ r`和\n`,对吗? (2认同)

kap*_*apa 18

你必须包裹\n\r"",而不是''.使用单引号时,不会解释转义序列(除了\'\\).

手册说明:

如果字符串用双引号(")括起来,PHP将解释特殊字符的更多转义序列:

  • \n 换行(ASCII或0x或0x0A(10))

  • \ r \n 回车(ASCII或CR中的CR或0x0D(13))

  • (......)


tfo*_*ont 9

功能更强大(易于在任何地方使用):

function replace_carriage_return($replace, $string)
{
    return str_replace(array("\n\r", "\n", "\r"), $replace, $string);
}
Run Code Online (Sandbox Code Playgroud)

使用PHP_EOL作为搜索替换参数也是一个好主意!荣誉.


Asi*_*lla 5

这应该像

str_replace(“ \ n”,``,$ str);
str_replace(“ \ r”,``,$ str);
str_replace(“ \ r \ n”,``,$ str);


小智 5

要从字符串中删除新行,请按照以下代码

$newstring = preg_replace("/[\n\r]/","",$subject); 
Run Code Online (Sandbox Code Playgroud)