如何从字符串中删除换行符(无字符!)?

2022-08-30 06:29:22

这似乎是一个骗局,但请放心,事实并非如此 - 我已经搜索了SO以及网络的其余部分,以寻找我问题的答案,最终一遍又一遍地找到了同样不充分的“解决方案”。无论如何,它在这里:

我正在将用户输入从文本区域保存到MySQL数据库(在WordPress环境中,但我相信这对这个问题并不重要)。稍后从数据库中检索它,以显示给站点后端的管理员。当用户提交带有换行符的文本(即按 Enter 键)时,会出现此问题。

示例字符串可能如下所示:

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

Greetings,
Bill

字符串中没有行尾字符(“\n”、“\r”或类似字符)。

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

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

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

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

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

如果字符串中有EOL字符,例如“\n”,我会用其中一个击中它,或者用它完成它,但是如果一开始就没有字符,我不知道该给这两个函数中的任何一个喂食什么针。str_replace()preg_replace()

我可以手动访问数据库中的相关字段,为每个换行符点击Backspace,以及我以后想要对字符串所做的工作。所以我知道我需要上面的格式。


答案 1

Ben 的解决方案是可以接受的,但 str_replace()preg_replace() 快得多

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

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


答案 2

您应该能够将其替换为删除所有换行符和回车符的 preg。代码是:

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

即使字符没有出现,如果您要获得回车符,那里也会有一个不可见的字符。preg替换应该抓住并修复它们。\n


推荐