您的位置:BugFree > 论坛 > 技术支持 > Learn BugFree[阅读BugFree代码] > BugFree开发中的问题及解决方案--描述信息中的代码
2005-09-06 17:27:07 BugFree开发中的问题及解决方案--描述信息中的代码
#1
wwccss
访问次数 : 593
注册日期 : 05-05-01 10:08
上次访问 : 10-07-19 11:44
一、前言:
我们在会不定期的将我们在开发BugFree过程中遇到的问题及我们的解决方案和大家共享。需要说明的是,我们的解决方案不一定是最优的,仅仅是我们在目前的状况下找到的最适合我们的方案而已。如果你有更好的方法,也欢迎分享。
(其他网站如有转载,请注明我们的出处,多谢。)

二、描述信息中的代码问题。

1. 问题产生的历史缘由:
BugFree一开始的时候,描述信息是采用纯文本的形式存储的,并且使用strip_tags()函数处理过,所以早期的Bug描述里面只有纯文本的东西。在展示的时候,使用nl2br()函数将换行转为标记。

后来我们引入了可视化的编辑器,在信息里面可以存储网页代码。

但为了后面的TestCase功能需要,我们在0.6版本中将可视化编辑功能去掉了,这就带来了一个问题,怎样比较好的兼容前后的信息。

2. 问题的具体表现:
2.1 要比较好的解决换行的问题。
2.2 要能在描述里面输入php代码,网页代码或者其他的代码。
2.3 代码的空格要比较好的显示出来。

3. 解决方案:

3.1 首先我们在入库的时候,使用htmlspecialchars()对引号,书名号进行转码。
3.2 在显示的时候,做如下处理:
[code]$HistoryInfo["FullInfo"] = str_replace(" ", " ", $HistoryInfo["FullInfo"]); //将空格替换
$HistoryInfo["FullInfo"] = strip_tags($HistoryInfo["FullInfo"], ""); // 删除历史描述里面的html标签,保留和
$HistoryInfo["FullInfo"] = nl2br($HistoryInfo["FullInfo"]); //将换行符转成
$HistoryInfo["FullInfo"] = str_replace("","", $HistoryInfo["FullInfo"])); 将两个换成一个[/code]
4. 心得:

strip_tags()还有第二个参数来控制哪些标签不被删除,是一个意外的发现,也正是这个功能比较好的解决了这个历史遗留问题。

htmlspecialchars和htmlentities类似,但后者在转换的时候,必须指定编码类型,否则的话会出现乱码,比较罗嗦,就使用了前者。
回帖
2009-12-28 12:49:06
#2
winterness
访问次数 : 9
注册日期 : 09-09-04 09:59
上次访问 : 10-02-21 09:57
请问,如何修改新建BUG页面发现类型、操作系统等选项内容,谢谢!
回帖