换行符不通过


Line breaks not going through

好吧,对于我的网站,我允许我的用户对自己或任何他们喜欢的东西进行描述,但是当我尝试使用 [ENTERKEY] 在<textarea>中进行中断时,它看起来像这样:

Hello, I am John Smith.
Phone#: (123)456-7890
I enjoy web-browsing.

当我返回页面时,它看起来完全相同(它将他们的当前描述放在编辑框中)。这就是我想要的。我查看了PHP数据库,它看起来仍然相同。这又是我想要的。但是在个人资料页面上看起来像这样

Hello, I am John Smith. Phone#: (123)456-7890 I enjoy web-browsing.

它包含在带有这些样式标签的div 中,就像这样

        <div style="width: 250px; min-height: 50px; margin: auto; font-weight: normal; text-align: center; padding: 2px; margin-bottom: 5px;">
            <?php echo $description; ?>
        </div>

我很好奇为什么它会这样做,:D任何帮助将不胜感激。

white-space:pre-line添加到您的<div> 或者,使用:

<?= nl2br($description); ?>

请记住,HTML 需要<br />换行符,而不是'n'r'n(就像您的<textarea>正在收集的那样)。因此,您可以使用white-space告诉HTML注意这些新行,或者使用nl2br强制<br />

当您在文本区域中输入换行符时,它会存储为'n ,但是,HTML 不支持'n换行符,这就是为什么在div 内所有内容都显示在一行中的原因。

要解决此问题,您必须将'n转换为 HTML 识别的<br />(使用 nl2br()

):
<div style="width: 250px; min-height: 50px; margin: auto; font-weight: normal; text-align: center; padding: 2px; margin-bottom: 5px;">
    <?php echo nl2br($description); ?>
</div>

这是因为当您使用常规换行符并尝试将其呈现为 HTML 时,HTML 会忽略空格字符。 您需要显式使用 <br>(或<br/>,具体取决于 DOCTYPE)在 HTML 中创建换行符。

在 PHP 中执行此操作的最简单方法是在输出时使用 PHP 中的nl2br()函数。