首页建站经验 调用discuz编辑器发布帖子显示html代码的解决办法

调用discuz编辑器发布帖子显示html代码的解决办法

在discuz二次开发中调用discuz的编辑器是一件在所难免的事情,然而discuz的开发文档少得可怜;因此在二次开发的时候查看源码和各种莫名其妙的问题着实令人摸不着头脑。前面讲解…

在discuz二次开发中调用discuz的编辑器是一件在所难免的事情,然而discuz的开发文档少得可怜;因此在二次开发的时候查看源码和各种莫名其妙的问题着实令人摸不着头脑。前面讲解了一下调用discuz编辑器的实例 调用discuz编辑器再也不是问题了 。然而这只是一个粗糙的例子,而discuz帖子存储在数据库的却是自定义的bbcode而不是正常的html代码。这也就导致直接调用discuz的编辑器发帖显示出来的帖子成了html源码。

网上找了很久也没找到相应的问题,最后通过数据库的字段对比才知道问题的所在。

1、问题所在

调用编辑器编辑的源码

顶顶顶顶顶的顶顶顶顶顶顶顶顶顶的的

而默认发帖的源码为

顶顶顶顶顶[b][i][u]的顶顶顶顶顶[/u][/i][/b]顶顶顶顶的的[url=data/attachment/album/201507/22/112816z1znnm01wmozpvgb.png][img]data/attachment/album/201507/22/112816z1znnm01wmozpvgb.png[/img][/url]

于是网上找了一通,最后才知道这是discuz的特色。对html代码进行了特殊的处理,其采用了bbcode的方式进行二次编码,显示帖子的时候再将bbcode编码转换成正常的html代码。discuz这么做的目的也显而易见,最终是为了提高整个应用的安全性。

2、提交前对html进行bbcode编码

static/js/bbcode.js中的html2bbcode可以讲正常的html编码转换成discuz自定义的bbcode编码

最后在./static/image/editor/editor_function.js中的edit_save()找到了获取编辑器内容,并设置编码

var p = window.frames['uchome-ifrHtmlEditor'];

var obj = p.window.frames['HtmlEditor'];

var status = p.document.getElementById('uchome-editstatus').value;

$('uchome-ttHtmlEditor').value = p.document.getElementById('sourceEditor').value;

3、完整的调用方式


其中jQuery("#message").val(html2bbcode(mcpobj.document.body.innerHTML));是将html转成bbcode。

4、这里只是web前端进行了bbcode的编码。然而如果有需要也可以在php处理函数中进行bbcode的转换

$str = "的的顶顶顶顶顶的顶顶顶顶顶顶顶顶顶的的";

//html转成bbcode

require_once libfile('function/editor');

echo html2bbcode($str);

echo "
";

$str2 = '[b][i]的的顶顶顶顶顶的顶顶顶顶顶顶顶顶顶的的[/i][/b]';

//将bbcode转成html

require_once libfile('function/discuzcode');

echo discuzcode($str2, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0);

以上就是本文章的内容,希望对大家有所帮助

本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/jianzhan/jingyan/19126.html
上一篇Discuz!管理员无法登录后台时更新系统缓存的方法
下一篇 WordPress后台中实现图片上传功能的实例讲解
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部