3

当用户从文本区域保存文本时:

bfajsdb fkjasdfasjkdfasdfasdf asdf asdf sdf

asdfasdfasdfasdf asd asdf asdf 

sdfasdfasdf

从 textarea 使用 codeignter 中的 nl2br_except_pre 函数将其保存在数据库中,如下所示:

bfajsdb fkjasdfasjkdfasdfasdf asdf asdf sdf
<br>
asdfasdfasdfasdf asd asdf asdf 
<br>
sdfasdfasdf

很适合在 div 或 p 标签中输出。或一般在 html 输出中。

但是,当再次在 textarea 中重新填充时,它会显示
标签,这很丑陋并且会让用户感到困惑。

如何在从数据库重新填充保存的值之前清理输出,使其在 textarea 中看起来像这样:

bfajsdb fkjasdfasjkdfasdfasdf asdf asdf sdf

asdfasdfasdfasdf asd asdf asdf 

sdfasdfasdf

而不是这样:

bfajsdb fkjasdfasjkdfasdfasdf asdf asdf sdf
<br>
asdfasdfasdfasdf asd asdf asdf 
<br>
sdfasdfasdf
4

3 回答 3

6

好吧,粗略的答案将是“只使用strip_tags ”:

$raw_textarea = 'bfajsdb fkjasdfasjkdfasdfasdf asdf asdf sdf
<br>
asdfasdfasdfasdf asd asdf asdf 
<br>
sdfasdfasdf';

$clean_textarea = strip_tags($raw_textarea);
echo $clean_textarea;

但是,事实上,还有更多:也许您需要担心清理输出,而不仅仅是清除不相关的标签。我建议阅读有关该主题的讨论

于 2012-09-04T12:14:00.893 回答
4

不要在数据库中保存 nl2br() 数据;您的目标应该是在您的数据库中存储数据而不是 html。

在必要时在视图中呈现时将 nl2br() 应用于数据库值。顺便说一句,Textarea 字段不需要 nl2br() 处理。

当然,当你输出它时,你也应该在 nl2br() 之前应用 htmlspecialchars() 。

于 2012-09-04T12:14:34.467 回答
0

试试nl2br php函数

它将产生您想要的输出。

是的,这是正确的。如果您在显示数据时使用 nl2br 函数,它将起作用。

于 2012-09-04T12:14:37.480 回答