在 html textarea 的每一行周围添加段落标签

Adding paragraph tags around each line in html textarea

我正在尝试让用户尽可能轻松地在文本区域中输入文本,而无需他们知道任何代码或必须处理所见即所得格式。这只是文字。 但是由于文本在页面上显示时将以 html 显示,因此每行周围有 'p' 标记会很棒。

现在我已经试过了:

    $content = mysqli_real_escape_string($connection,$_POST['content']);

    $paragraphs = explode("\n", $content);
    for ($i = 0; $i < count ($paragraphs); $i++)
    {
        $paragraphs[$i] = '<p>' . $paragraphs[$i] . '</p>';
    }
    $content = implode('', $paragraphs);

但这是将 <p></p> 标签放在所有内容周围 - 一个在 post 的开头,一个在结尾,忽略所有 returns。

谁能看出我做错了什么?

当您调用 mysqli_real_escape_string() 时,这会对某些内容进行编码 - 来自 manual

escapestr

The string to be escaped.

Characters encoded are NUL (ASCII 0), \n, \r, \, ', ", and Control-Z.

因此任何 \n 都将被转义。

你可以换个地方先做替换...

$paragraphs = explode("\n", $_POST['content']);
for ($i = 0; $i < count ($paragraphs); $i++)
{
    $paragraphs[$i] = '<p>' . $paragraphs[$i] . '</p>';
}
$content = implode('', $paragraphs);

但是你也应该使用准备好的语句,所以你根本不需要调用 mysqli_real_escape_string()