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

时间:2013-11-11 23:48:14

标签: php html mysql

我将数据存储在名为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这包括换行符?

3 个答案:

答案 0 :(得分:3)

输出到textarea时,如果文本包含HTML,则必须调用 htmlentities htmlspecialchars

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

这会将您的<br />转换为&lt;br /&gt;。如果您将<br />保留为未编码状态,则只会将其解释为HTML。

如果您的目标是在textarea中显示<br />或其他HTML,因为它在数据库中写入,您必须转义所有可能被解释为HTML的代码。

修改

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

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

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

答案 1 :(得分:2)

您可以尝试str_replace<br />代码替换为行尾字符。

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

答案 2 :(得分:0)

标签内部不接受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>

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