<br>存储在 mysql 字段中,但在回显时没有换行符


<br> stored in mysql field but no line break when echo

>我正在将数据存储在名为 message 的字段中。此字段的一个示例是:

<br /><br />
shane!
<br /><br />
****** Original Message ******
Test Back

<br /><br />

****** Original Message ******
test

当我将其echo<textarea>字段中时,它显示为:

shane! ****** Original Message ****** Test Back ****** 
Original Message ****** test

我该如何echo它以包含换行符?

输出到文本区域时,如果文本包含 HTML,则必须调用

htmlentities htmlspecialchars
<textarea><?php echo htmlspecialchars($text); ?></textarea>

这会将您的<br />转换为 &lt;br /&gt; .如果使<br />保持未编码状态,它们将被简单地解释为 HTML。

如果您的目标是在文本区域中显示<br />或其他 HTML,就像在数据库中编写的那样,则必须转义否则会被解释为 HTML 的所有代码。

编辑

如果要输出换行符而不是<br />可以使用str_replace

<textarea><?php echo str_replace('<br />', "'r'n", $textarea); ?></textarea>

但请记住,所有其他 HTML 将被解释且不显示。我认为您应该在源头解决问题,如果您不需要 HTML,请将 CRLF 存储在数据库中。

您可以

尝试str_replace<br />标签替换为行尾字符。

 str_replace('<br />', PHP_EOL, $textarea);

标签不接受其中的 HTML 代码。相反,您需要将代码格式化为纯文本文件。检查此示例:

http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_textarea

现在将源代码替换为以下内容:

<!DOCTYPE html>
<html>
<body>
<textarea rows="4" cols="50">
At w3schools.com you will learn how to make a website.

We offer free tutorials in all web development technologies.
</textarea>
</body>
</html>

您将看到文本区域内的格式与标签非常相似。因此,您的问题的答案是您需要用换行符替换每个
字符。