用java 代码将 ubb编辑器转为ueditor 编辑器 的 html格式

一直以来,在抽空余的时间打算升级自己的博客,因为原来的开源博客早已经不更新了,而且是asp写的。编辑器是 ubb 编辑器, 而我现在打算使用百度 ueditor,这是一个标准的HTML编辑器, 因此需要将博客的内容进行批量转换,也就是将UBB格式转换成HTML 格式,但同时要注意转换的HTML代码,不能产生XSS 注入,特别是有些博客内容有 javascript  代码的情况。
在网上找到一些方法:
一,站长站上有现成的工具,可以粘贴进去,测试,结果,确实可以转成HTML ,但一旦到Ueditor里面全乱了,而且也只能一个一个去做,方式也不可取。类似的工具页面太多了,一搜一大把.

二,在CSDN上下载了一个jar包,进行处理,结果,还是不满意。

三,没办法了,自己参考网上的资料,写适合自己的转换方法。后来发现,这个开源博客里面有一些自己定制的UBB标签,当然绝大多数是通用的。自己写的java代码如下:
程序代码 程序代码

    public static String decode(String argString)
      {
        String tString = argString;
        if (!tString.equals(""))
        {
          Boolean tState = true;
//          tString = tString.replace("&", "&");
          tString = tString.replaceAll("<br />", "");
          tString = tString.replaceAll("<br/>", "");
          tString = tString.replaceAll("&nbsp;", " ");
          tString = tString.replaceAll(" ", " ");
          tString = tString.replaceAll(">", ">");
          tString = tString.replaceAll("<", "<");
//          tString = tString.replace("\"", """);
//          tString = tString.replace("&#91;", "[");
//          tString = tString.replace("&#93;", "]");
//          tString = tString.replaceAll("\\[br\\]", "<br />");
          tString = tString.replaceAll("(\r\n|\n\r|\r|\n)", "<br />");
          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\" target=\"_blank\">$2</a>"},
            {"\\[img\\]([^\\[]*?)\\[\\/img\\]", "<a href=\"$1\" target=\"_blank\"><img src=\"$1\" /></a>"},
            {"\\[down=([^\\]]*)\\]([^\\[]*?)\\[\\/down\\]", "<a href=\"$1\" target=\"_blank\">$2</a>"},
            {"\\[mDown=([^\\]]*)\\]([^\\[]*?)\\[\\/mDown\\]", "<a href=\"$1\" target=\"_blank\">$2</a>"},
          };
          while (tState)
          {
            tState = false;
            for (int ti = 0; ti < tRegexAry.length; ti ++)
            {
              String tvalue1, tvalue2;
              Pattern tPattern = Pattern.compile(tRegexAry[ti][0]);
              Matcher tMatcher = tPattern.matcher(tString);
              while (tMatcher.find())
              {
                tState = true;
                tvalue1 = tMatcher.group();
                tvalue2 = tRegexAry[ti][1];
                for (int tk = 1; tk < (tMatcher.groupCount() + 1); tk ++) tvalue2 = tvalue2.replace("$" + tk, tMatcher.group(tk));
                tString = tString.replace(tvalue1, tvalue2);
              }
            }
          }
        }
        return tString;
      }


然后又用java写了一个方法,读数据库中的内容,循环调用这个 decode 方法,结果发现,基本满足自己需要,样式也没有乱。成功转到ueditor中,感觉还不错。



除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: ubb ueditor
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.