换行不通过

时间:2013-09-24 23:41:55

标签: php css database alignment

好吧,对于我的网站,我允许我的用户描述他们自己或他们喜欢的任何东西,但是当我尝试使用[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。

3 个答案:

答案 0 :(得分:0)

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

<?= nl2br($description); ?>

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

答案 1 :(得分:0)

当您在textarea中输入换行符时,它会被存储为\n,但HTML不会尊重\n换行符,这就是为什么所有内容都在div中显示在一行中的原因。

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

<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>

答案 2 :(得分:0)

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

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