【问题标题】:Why does PHP echo'd text lose its formatting?为什么 PHP 回显的文本会丢失其格式?
【发布时间】:2020-06-05 03:32:11
【问题描述】:

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

【问题讨论】:

  • echo 没问题,你只是错过了一些东西。您希望输出如何?
  • 恐怕你得学html。

标签: php formatting


【解决方案1】:

使用nl2br()

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

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

【讨论】:

  • 从技术上讲,这不是他所要求的……将文本区域与非文本区域进行比较……:)
【解决方案2】:

因为没有用于格式化的html标签! 试试nl2br 函数。

【讨论】:

  • 如另一个答案中所述......从技术上讲,这不是他所要求的......将文本区域与非文本区域进行比较...... :)
  • 是的,但这就是问题所在;)
【解决方案3】:

你可以尝试添加nl2br()函数...

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

它应该工作;-)

【讨论】:

  • 小错...删除" ;)
【解决方案4】:

原因

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

你困惑的原因可能是你曾经看到<textarea>标签中的文字,它显示preformatted文字,不解释标签,另一种情况是文字被解释(在这种情况下,空格并不重要)。

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

没有标签 == 没有新行。

修复

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

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

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

查看类似问题:

【讨论】:

    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        这应该有助于回答。 How do I keep whitespace formatting using PHP/HTML?enter link description here

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

        【讨论】:

          猜你喜欢
          • 2011-11-22
          • 2016-04-16
          • 2017-04-27
          • 1970-01-01
          • 2012-04-20
          • 2015-08-23
          • 1970-01-01
          • 2011-05-12
          相关资源
          最近更新 更多