【发布时间】:2012-06-01 05:28:50
【问题描述】:
这似乎是一个骗局,但请放心,它不是 - 我已经搜索了 SO 以及网络的其他部分以寻找我的问题的答案,最终发现同样不足的“解决方案”超过。总之,就是这样:
我正在将用户输入从 textarea 保存到 MySQL 数据库(在 WordPress 环境中,但我相信这与这个问题无关)。它稍后会从数据库中检索,以显示给站点后端的管理员。当用户提交带有换行符的文本(即按 Enter 键)时会出现此问题。
示例字符串可能如下所示:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!
Greetings,
Bill
字符串中没有行尾字符(“\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() 结果,因为它插入了标签并且不应该首先替换换行符?
但是我需要的格式是这样的:
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,然后我想要对字符串执行的操作。所以我知道我需要上述格式。
【问题讨论】:
-
如果字符串看起来像你的第一个例子,那么你怎么能说它没有换行符呢?它至少有两个:在“谢谢!”之后连续两个
-
Fair enuff @ErnestFriedman-Hill,你显然是对的 - 那里有“东西”,它既不可见也不知道。
-
我也看不出没有换行符怎么可能有新行。你能用十六进制编辑器检查字符串吗?我相信你会找到新行的字符...
标签: php html replace line-breaks nl2br