首页 新闻 会员 周边 捐助

什么时候转换特殊字符

0
悬赏园豆:5 [已关闭问题]

什么时候转换特殊字符?是存入数据库之前还是从数据库查找出来显示的时候?

比如开发一个简单的留言本,用户可能会输入小于号之类的(“<”),那我应该在存入数据库之前就把转换成“&lt;”还是在显示的时候转换成“&lt;”?

如果在存储前替换,字段长度不好设计,因为一个“<”(1个字符)号会变成“&lt;”(4个字符)

如果是取出来显示的时候,可能会有多个地方显示这个内容,如果遗漏一处没有进行替换,可能会有问题。

另外,对于换行符好像有点麻烦,在textarea中换行符(\r)是可以显示的,但是在其他元素中,如DIV ,就要把\n换成<br />. 如果我在存储前替换,那么在用户修改留言时要把<br /> 换成\n. (textarea中“<br />”不会产生换行)

问题补充: 需要转换的特殊字符主要有三种, 第一是 <>&等,这些是HTML“保留字” 第二是 空格,HTML里多个空格在浏览器下现实的时候会变成一个空格 第三是 \n,html里的换行在现实的时候没有效果,需转换成<br /> 风海迷沙没有理解我的意思。 我并不需要富文本。 比如用户输入了<号外>,那明显这个“<"和">"是需要转义的,
记账本的主页 记账本 | 初学一级 | 园豆:75
提问于:2009-05-31 01:09
< >
分享
其他回答(1)
0

最好是查找出来的时候,数据库中应该放真实数据,不应该受前台表示层的影响。

如果有多种格式化需求的话,建议使用工厂方法模式,对每种需求写个方法就好了。

团子老爹 | 园豆:295 (菜鸟二级) | 2009-05-31 08:15
0

的确在textarea中不会产生换行,但是你保留提交的HTML属性,明显就是用了富文本控件,你再给写回去不就行了。在tinymice中<br />不是换行是什么呢?

不般不做替换,只过滤js等脚本事件,将html格式保留,替换单引号,放入数据库。

风海迷沙 | 园豆:4453 (老鸟四级) | 2009-05-31 12:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册