如何从string中删除换行符(没有字符!)?

这似乎是一个愚蠢的,但放心,这不是 – 我已经search了所有以及networking的其余部分,为我的问题的答案,并最终find同样不足的“解决scheme”一遍又一遍。 无论如何,这里是:

我将用户input从textarea保存到MySQL数据库(在WordPress环境中,但我相信对这个问题应该不重要)。 它稍后从数据库中检索到显示给站点后端的pipe理员。 当用户用换行符提交文本时(即按Enter键),就会出现问题。

示例string可能如下所示:

Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks! Greetings, Bill 

string中没有行尾字符(“\ n”,“\ r”等)。

我使用nl2br()来生成HTML输出,但这还不够。 结果是:

 Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /> <br /> Greetings,<br /> Bill 

就我所知,它是预期的nl2br()结果,因为插入了标签,不应该首先replace换行符?

但是我需要的格式是这样的:

 Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill 

如果string中有EOL字符,例如“\ n”,我会用str_replace()或者preg_replace()来处理它,但是如果有的话,首先不是没有字符。

我可以手动访问数据库中的相关字段,为每个换行符点击Backspace,以及之后我想要处理的string。 所以我知道我需要上述格式。

你应该能够用一个preg来replace它,它将删除所有换行符和回车符。 代码是:

 preg_replace( "/\r|\n/", "", $yourString ); 

即使认为\n字符没有出现,如果你得到回车,那里有一个无形的字符。 pregreplace应该抓住并修复这些。

Ben的解决scheme是可以接受的,但是str_replace()比preg_replace()要快得多

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

使用更less的CPU功率,减less世界二氧化碳排放量。

 $str = " Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /> <br /> Greetings,<br /> Bill"; echo str_replace(array("\n", "\r"), '', $str); // echo $str in a single line 

这是因为nl2br()根本不会删除新行。

所有换行符( \r\n\n\r\n\r之前插入带有<br /><br>string。

改用str_replace

 $string = str_replace(array("\r\n", "\r", "\n"), "<br />", $string); 

要在Windows上正常工作,我build议使用

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

"\r\n" – 对于Windows, "\r" – 对于Mac和"\n" – 对于Linux

str_replace(PHP_EOL,null,$ str);

东西多一点function(易于使用的任何地方):

 function strip_carriage_returns($string) { return str_replace(array("\n\r", "\n", "\r"), '', $string); } 

使用PHP_EOL作为searchreplace参数也是一个好主意! 荣誉。

您也可以使用PHP修剪

这个函数返回一个从str的开始和结束中删除空格的string。 没有第二个参数,trim()会去掉这些字符:

  • “”(ASCII 32(0x20)),一个普通的空间。
  • “\ t”(ASCII 9(0x09)),一个选项卡。
  • “\ n”(ASCII 10(0x0A)),换行(换行)。
  • “\ r”(ASCII 13(0x0D)),回车。
  • “\ 0”(ASCII 0(0x00)),NUL字节。
  • “\ x0B”(ASCII 11(0x0B)),一个垂直标签。

既然你正在使用WP,为什么不利用Wordpress的wpautop()函数,这里logging: https ://codex.wordpress.org/Function_Reference/wpautop

尝试:

 wpautop( $string );