为什么格式化文本来自DB的任何想法,当在php中回显时丢失其格式,即没有新行?谢谢!
答案 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>
标签中。
您可能希望使用nl2br
,str_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
为输入数据库和输出显示页面设置字符串预处理代码