1

我有这个代码

       require_once("../Packages/Connection.php");
       $create_object = mysql_query("SELECT * FROM `Articles` WHERE `group` = 'News' ORDER BY `id` DESC;");

      while($row=mysql_fetch_array($create_object))
        {
        $time = $row[time];
        $date = date("H:i M jS o ",$time);
        print "<form action='Update.php' method='post' float:left;>

                <input hidden='hidden' name='articleId' value='$row[id]'>

                <input hidden='hidden' name='method' value='update'>

                <textarea name='articleText' rows='3' cols='25'>$row[text]</textarea>
                <br />  
                <input type='submit' value=' Update '>
            </form><br />
            <form action='Update.php' method='post'>

                <input hidden='hidden' name='articleId' value='$row[id]'>

                <input hidden='hidden' name='method' value='delete'>

                <input type='submit' value=' Delete ' onClick='return confirmDelete()'float:left;'>

            </form>     
         <hr><br />";
         }  

它可以输出文本,它将新行更改为,<br />但每次更新时,它都会添加一个新的,所以我第一次输入如下文本:

Hi
My name is Jesper

it outputs Hi <br />
My name is Jesper to the database

and second time if i want to change something, like the name..
Hi <br /><br />
My name is JapSeyz

它继续添加<br />'s..我如何将其限制为只有一个?

4

2 回答 2

2

那是因为您nl2br在将文本存储到数据库之前使用。去那里看看...

nl2br正确的方法是仅在查看时转义数据(例如, )。数据库中的数据应该是清晰的,没有针对特定目的进行转义的任何修改。

但是,在<textarea>元素中,已经处理了换行符,无需在<br>其中插入元素。

所以不要nl2br在存储数据时使用,仅在页面上打印时使用(而不是在表单元素中)。

于 2012-10-14T15:45:18.157 回答
0

我用自己的功能修复 nl2br 错误:

if (!function_exists('snl2br')) {
    function snl2br( $input ) {
        return preg_replace('~(\r?\n\s?)+?~',"<br>",$input);
    }
}

我希望它会帮助你。

于 2016-02-13T10:38:28.733 回答