【问题标题】:How do I echo line breaks from a MySQL database?如何从 MySQL 数据库中回显换行符?
【发布时间】:2016-02-14 09:53:25
【问题描述】:

我创建了一个简单的墙贴功能,例如在 Facebook 上。

用户写了一个帖子,帖子被提交到数据库,然后回显到网站上;一切正常。

唯一的问题是,当文本回显到网站上时,换行符不是。所以,我输入:

“嘿,这是一个帖子。

这是一个新的段落”

它显示为:

“嘿,这是一篇文章。这是一个新段落”

我在这里看到一些帖子说要使用 nl2br() 函数并输入 /n 换行,但是我真的不希望我的用户每次想要一个新行时都必须写 '/n'行,他们应该只需要按键盘上的回车键。

换行符存储在数据库中,所以我不知道为什么它没有回显。有人可以帮忙吗?

不确定代码是否需要,但我会发布它以防万一。

while($wallposts = mysql_fetch_assoc($getwallposts)) {
    $postid = $wallposts['id'];
    $postedby_username = $wallposts['postedby'];
    $wallpostdate = $wallposts['dateposted'];
    $wallpost = $wallposts['post'];

    $querypostedby_info = mysql_query("SELECT * FROM `users` WHERE `username`='$postedby_username'");

    //get the info above
    if (mysql_num_rows($querypostedby_info)===1) {
        $getpostedby_info = mysql_fetch_assoc($querypostedby_info);

        $postedby_id = $getpostedby_info['id'];
        $postedby_profilepicture = $getpostedby_info['profilepicture'];
    }

    //display the posts
    $wallpoststicker = 
    "
    <div id='wallpost-container'>
        <div id='wallpost-header'>
            <img src='$postedby_profilepicture'><div id='wallpost-header-by'><a href='/profile.php?id=$postedby_id'>$postedby_username</a> said:</div>
            <div id='wallpost-date'>&bull; $wallpostdate</div> 
        </div>
        <div id='wallpost-content'>
            $wallpost
        </div>
    </div>
    ";
}

【问题讨论】:

  • 尝试将它们包含在&lt;pre&gt; 标签中,如下所示:...&lt;div id='wallpost-content'&gt;&lt;pre&gt;{$wallpost}&lt;/pre&gt;&lt;/div&gt;...

标签: php mysql echo


【解决方案1】:

PHP 函数 nl2br 将换行符转换为“&lt;br&gt;”中断。
所以,$wallpost=nl2br($wallpost); 应该完成任务。

【讨论】:

  • 当我说:“嘿,这是一篇文章。这是一个新段落=nl2br(嘿,这是一篇文章。这是一个新段落);”
  • @Harry 请原谅我无法理解,那么您是否获得了所需的换行符到 BR 的转换(nl2br)?
  • @Harry 我的立场是正确的。请在&lt;?php ... ?&gt; 标签中附上$wallpost=nl2br($wallpost); 行,并在必要时“回显”。谢谢。
  • 所以你想让我把 "" 放在
    里面?我会看看这是否有效,我的服务器目前已关闭。 ://
  • @Harry 不要使用 mysql_query,它已被弃用。使用 mysqli_* 函数和准备好的语句。对于实际查询,如果 where 子句中指定的条件存在 3 个帖子,它将返回最多 3 个帖子。不过汤姆是对的,应该是一个新问题。
【解决方案2】:

建议 nl2br 的答案很棒,我会采用这种方法。

在您最初的问题中,我认为存在一些混淆——用户不会在每次想要换行时都输入\n。斜线用于转义(特殊字符,不是普通的 n)。

在 Windows 机器上,Enter 键等效于 \r\n,其中 \r 是回车,\n 是换行符。在 Linux 或类似系统上,Enter 键是 \n\r 的 ascii 值为 13,\n 的 ascii 值为 10。

因此,EOL(行尾)将是 \r\n\n。 php有nl2br函数,其目的是将所有\r\n\n替换为&lt;br&gt;,即用于换行的html标签。

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签