为什么PHP echo的文本会丢失其格式?

时间:2011-07-15 11:38:58

标签: php formatting

为什么格式化文本来自DB的任何想法,当在php中回显时丢失其格式,即没有新行?谢谢!

enter image description here

7 个答案:

答案 0 :(得分:27)

使用nl2br()

浏览器会忽略新行。这就是为什么你看到没有换行符的所有文字。 nl2br()会将新行转换为<br />标记,这些标记在浏览器中显示为新行。

如果您想在<textarea>中显示文字,则无需将所有新行转换为<br />。无论如何,如果你这样做......你会在新行的地方看到“<br />”作为文字。

答案 1 :(得分:14)

因为格式没有html标签! 试试nl2br功能。

答案 2 :(得分:9)

您可以尝试添加nl2br()功能...

类似这样的事:echo nl2br($your_text_variable);

应该有用; - )

答案 3 :(得分:6)

原因

这是所有用户代理的默认行为。如果查看页面源代码,您将看到文本的格式与数据库(或textarea)中的格式相同。

您混淆的原因可能是您曾在<textarea>标记中看到文本,其中显示预先格式化的文本,不会解释标记,而在另一种情况下会显示文本被解释(在这种情况下,空格并不重要)。

除非特别要求,否则浏览器不会显示新行 - 使用<br>标记或任何块级别标记。

没有标签==没有新行。

修复

如果您将预先格式化的文本存储在数据库中, 你应该将输出包装在<pre>标签中。

您可能希望使用nl2brstr_replace等功能将格式字符转换为所需的HTML标记。

您也可以更正您的结构以将HTML存储在数据库中而不仅仅是纯文本(但标记看起来更像是一个更好的解决方案)。

见类似问题:

答案 4 :(得分:3)

您展示的两张图片之间的区别在于,其中一张图片的文字位于<textarea></textarea>而另一张图片则没有...如果您想要1:1:<textarea><?php echo $yourVariable;?></textarea>

答案 5 :(得分:2)

它确实输出你说的输出。如果文本已预先格式化,请将其放在输出脚本中的HTML <pre></pre>标记内。

答案 6 :(得分:0)

这对回答很有帮助。 How do I keep whitespace formatting using PHP/HTML? enter link description here

为输入数据库和输出显示页面设置字符串预处理代码