• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
要想人前显贵,必定人后受罪。
博客园    首页    新随笔    联系   管理    订阅  订阅
BBCode使用图解教程

BBCode也是一个富文本编辑器,主要用于用户评论的时候插入表情,改变字体样式(加粗、变红、倾斜)。在HTML中,加粗的标签是<b></b>而在BBCode中是[b][/b]

1、将从网上下载的ckeditor复制到项目中。

      

2、将ckeditor.js引用到项目中。

   <script src="/ckeditor/ckeditor.js"></script>

3、在窗体加载完毕以后调用一个BbcFunction(),目的是替换之前的文本区域。

<script type="text/javascript">
    $(function () {    
        BbcFunction();        
    });
    
    function BbcFunction()
    {
        //通过id(textAreaContent)替换。id为textAreaContent的元素类型是textarea.
        CKEDITOR.replace('textAreaContent',
        {
            extraPlugins: 'bbcode',
            removePlugins: 'bidi,button,dialogadvtab,div,filebrowser,flash,format,forms,horizontalrule,iframe,indent,justify,liststyle,pagebreak,showborders,stylescombo,table,tabletools,templates',
            toolbar:
            [
                ['Source', '-', 'Save', 'NewPage', '-', 'Undo', 'Redo'],
                ['Find', 'Replace', '-', 'SelectAll', 'RemoveFormat'],
                ['Link', 'Unlink', 'Image'],
                    '/',
                ['FontSize', 'Bold', 'Italic', 'Underline'],
                ['NumberedList', 'BulletedList', '-', 'Blockquote'],
                ['TextColor', '-', 'Smiley', 'SpecialChar', '-', 'Maximize']
            ],
            smiley_images:
            [
                'regular_smile.gif', 'sad_smile.gif', 'wink_smile.gif', 'teeth_smile.gif', 'tounge_smile.gif',
                'embaressed_smile.gif', 'omg_smile.gif', 'whatchutalkingabout_smile.gif', 'angel_smile.gif', 'shades_smile.gif',
                'cry_smile.gif', 'kiss.gif'
            ],
            smiley_descriptions:
            [
                'smiley', 'sad', 'wink', 'laugh', 'cheeky', 'blush', 'surprise',
                'indecision', 'angel', 'cool', 'crying', 'kiss'
            ]
        });
    }    
</script>

 4、得到富文本编辑器中的值。

  之前得到文本框中的值是通过Jquery下的 Val()来获得里面的内容,如果使用BBCode富文本编辑器,这种方式是不行的。要通过实例和getData() 来获得数据。

  var oEditor = CKEDITOR.instances.textAreaContent(id);  通过 id 来获得实例。 

  var val = oEditor.getData(); //得到输入的值。

  然后再根据val的值进行判断,是否不能为空之类的。  

  if (val.trim().length > 0) {
    //添加评论。
    AddComment(val);
  } else {
    $("#commentMsg").text("评论内容不能为空!");
  }

5、为富文本编辑器赋值。

   如果评论成功的话,就自动清除富文本编译器中的值,之前传统的做法是 $("#textAreaContent").text(""); 这样就为赋值为空了。现在使用这种做法是不行的。做法是通过实例名调用setData()

   oEditor.setData(" ");

6、在评论的时候我为字体加粗变红了,结果插入数据库是这样的,[color=#ff0000][b]哈哈哈哈哈哈哈哈哈哈哈[/b][/color],由于浏览器不认识这种标签,没有办法对字体进行渲染,所以显示出来的也是

      [color=#ff0000][b]哈哈哈哈哈哈哈哈哈哈哈[/b][/color]这一坨东西,因此应该通过正则表达式进行转换成HTML编码。在展示评论之前调用一下下面的方法即可转换成HTML编码。

/// <summary>
/// 将UBB编码转成HTML编码
/// </summary>
/// <param name="argString"></param>
/// <returns></returns>
public static string UbbToHtml(string argString)
{
    string tString = argString;
    if (tString != "")
    {
        Regex tRegex;
        bool tState = true;
        tString = tString.Replace("&", "&amp;");
        tString = tString.Replace(">", "&gt;");
        tString = tString.Replace("<", "&lt;");
        tString = tString.Replace("\"", "&quot;");
        tString = Regex.Replace(tString, @"\[br\]", "<br />", RegexOptions.IgnoreCase);
        string[,] tRegexAry = {
          {@"\[p\]([^\[]*?)\[\/p\]", "$1<br />"},
          {@"\[b\]([^\[]*?)\[\/b\]", "<b>$1</b>"},
          {@"\[i\]([^\[]*?)\[\/i\]", "<i>$1</i>"},
          {@"\[u\]([^\[]*?)\[\/u\]", "<u>$1</u>"},
          {@"\[ol\]([^\[]*?)\[\/ol\]", "<ol>$1</ol>"},
          {@"\[ul\]([^\[]*?)\[\/ul\]", "<ul>$1</ul>"},
          {@"\[li\]([^\[]*?)\[\/li\]", "<li>$1</li>"},
          {@"\[code\]([^\[]*?)\[\/code\]", "<div class=\"ubb_code\">$1</div>"},
          {@"\[quote\]([^\[]*?)\[\/quote\]", "<div class=\"ubb_quote\">$1</div>"},
          {@"\[color=([^\]]*)\]([^\[]*?)\[\/color\]", "<font style=\"color: $1\">$2</font>"},
          {@"\[hilitecolor=([^\]]*)\]([^\[]*?)\[\/hilitecolor\]", "<font style=\"background-color: $1\">$2</font>"},
          {@"\[align=([^\]]*)\]([^\[]*?)\[\/align\]", "<div style=\"text-align: $1\">$2</div>"},
          {@"\[url=([^\]]*)\]([^\[]*?)\[\/url\]", "<a href=\"$1\">$2</a>"},
          {@"\[img\]([^\[]*?)\[\/img\]", "<img src=\"$1\" />"}
        };
        while (tState)
        {
            tState = false;
            for (int ti = 0; ti < tRegexAry.GetLength(0); ti++)
            {
                tRegex = new Regex(tRegexAry[ti, 0], RegexOptions.IgnoreCase);
                if (tRegex.Match(tString).Success)
                {
                    tState = true;
                    tString = Regex.Replace(tString, tRegexAry[ti, 0], tRegexAry[ti, 1], RegexOptions.IgnoreCase);
                }
            }
        }
    }
    return tString;
}

 7、效果图如下。

 

End。

 

posted on 2017-09-12 10:11  行走的蜗牛哦  阅读(2710)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3