什么时候转换特殊字符?是存入数据库之前还是从数据库查找出来显示的时候?
比如开发一个简单的留言本,用户可能会输入小于号之类的(“<”),那我应该在存入数据库之前就把转换成“<”还是在显示的时候转换成“<”?
如果在存储前替换,字段长度不好设计,因为一个“<”(1个字符)号会变成“<”(4个字符)
如果是取出来显示的时候,可能会有多个地方显示这个内容,如果遗漏一处没有进行替换,可能会有问题。
另外,对于换行符好像有点麻烦,在textarea中换行符(\r)是可以显示的,但是在其他元素中,如DIV ,就要把\n换成<br />. 如果我在存储前替换,那么在用户修改留言时要把<br /> 换成\n. (textarea中“<br />”不会产生换行)
最好是查找出来的时候,数据库中应该放真实数据,不应该受前台表示层的影响。
如果有多种格式化需求的话,建议使用工厂方法模式,对每种需求写个方法就好了。
的确在textarea中不会产生换行,但是你保留提交的HTML属性,明显就是用了富文本控件,你再给写回去不就行了。在tinymice中<br />不是换行是什么呢?
不般不做替换,只过滤js等脚本事件,将html格式保留,替换单引号,放入数据库。