如何从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 );