0

我对从我的数据库中读取的文本有一点问题。在用户确认他们的新帖子后,它会像这样保存在数据库中(就像我想要的那样)。

在此处输入图像描述

但是在网页中,它会忽略这些行,而只是在同一行上回显所有内容。

在此处输入图像描述

这是我的一些源代码:

$objekttekst=str_replace("\\r\\n", "<br>", $obj->innhold);

        $objekttittel=$obj->tittel;
?>
<h2><?=$objekttittel?></h2>

<p><?=$objekttekst?></p>

有人可以帮帮我吗?谢谢

4

3 回答 3

1

输入文本区域是预先格式化的,这意味着它将显示用户输入的任何换行符。但是,呈现的 HTML(Web 浏览器)不会显示输入中的任何换行符,除非使用诸如<BR>.

您在这里有几个选择。当然,这三个不是您唯一的选择,但它们是我个人最常使用的选择。

使用预先格式化的文本形成 textarea

如果您想在给出输入的类似文本区域中显示数据( objekttekst ),您可以执行以下操作:

<h2><?=$objekttittel?></h2>
<p><textarea><?=$objekttekst?></textarea></p>

在用户需要编辑条目的情况下,这将最适合您。

预格式化

如果你想按原样显示文本,你总是可以用<PRE>...</PRE>. 这将显示任何换行符、缩进等。请注意,这将使输出使用固定宽度的字体,例如Courier New

将换行符转换为<BR>标签

使用nl2br()另一个答案中已经提到的功能。有关详细信息,请参阅:http ://php.net/manual/en/function.nl2br.php 。

补充说明...

您可能想研究正则表达式,因为在许多情况下,您可能还想在 HTML 页面中显示数据之前对数据进行一些其他修改。nl2br()将处理换行符,但对于其他更复杂的修改,您应该学习正则表达式。

于 2013-11-14T23:59:13.810 回答
1

使用nl2br()功能。

$objekttekst = nl2br($obj->innhold);
于 2013-11-14T23:51:44.637 回答
0

您可以用标签包围您的字符串,<pre>而不是替换\n<br>

例子:

  <?php
    $objekttekst=$obj->innhold
    $objekttittel=$obj->tittel;
  ?>
  <h2><?=$objekttittel?></h2>
  <p><pre><?=$objekttekst?></pre></p>
于 2013-11-15T00:03:47.257 回答