discuz的ismozilla函数这么晚了,不知道还有没有人在,小弟半夜遇到一个问题,百思不得其解,请各位路过大神指点一二,不胜感激。discuz有个函数是将html代码转换成ubb代码的,看代码function html2bbcode($text) { $text = strip_tags($text, '');<br><br> if(ismozilla()) {<br> $text = preg_replace("/(?<!<br>|<br />|r)(rn|n|r)/", ' ', $text);<br> }<br>只列出了一部分代码。<br><br>上面的ismozilla函数是用来判断火狐浏览器的,代码如下<br><br>function ismozilla() {<br> $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);<br> if(strpos($useragent, 'gecko') !== FALSE) {<br> preg_match("/gecko/(d )/", $useragent, $regs);<br> return $regs[1];<br> }<br> return FALSE;<br>}<br><br>大家看到红色部分的代码了吧,不明白的是,为什么火狐浏览器就要把换行全部干掉?这到底是为什么?<br><br>我写了一个计划任务触发的发帖程序,估计是被其他东西触发了,发出来的帖子经过那个函数转换之后,全部没有换行。<br><br>在使用html2bbcode函数之前这样定义了:<br>$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7 360EE';<br>但是发出来的帖子还是没有换行,也不知道如何解决才好,说也奇怪,discuz定义了这个函数,可是整站却没有一处地方用到,奇怪得很。<br><br><font color="#e78608">------解决方案--------------------</font><br>写码的不止一个人。做的走了,来的人改了。到最后就是成了码渣了,横流在码中央。搜索一下,没有用到,只能说明,重构的时候忘了去掉了<br><font color="#e78608">------解决方案--------------------</font><br>这是一个将 HTML 标记转换成 BBCode 的函数,在 discuz 中没有地方需要这种功能<br><br>你若怀疑是这个函数作怪,那么就将红色的部分注释掉<br><font color="#e78608">------解决方案--------------------</font><br>问题在于:虽然你修改了那个函数,却发现问题依旧<br><font color="#e78608">------解决方案--------------------</font><br>可能是 为css做的 判断!!!</p> <div class="clear"></div>