我有这段代码
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..
如何将其限制为只有一个?
答案 0 :(得分:2)
那是因为在将文本存储到数据库之前使用nl2br
。去看看那里......
正确的方法是仅在查看时转义数据(例如nl2br
)。数据库中的数据应该清晰,没有任何关于为特定目的逃避的修改。
在<textarea>
元素中,新行已经处理,无需在其中插入<br>
个元素。
所以在存储数据时不要使用nl2br
,只有在页面上打印时才使用它(不在表单元素中)。
答案 1 :(得分:0)
我用我自己的函数修复了nl2br bug:
if (!function_exists('snl2br')) {
function snl2br( $input ) {
return preg_replace('~(\r?\n\s?)+?~',"<br>",$input);
}
}
我希望它会对你有所帮助。