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

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

一直以来,在抽空余的时间打算升级自己的博客,因为原来的开源博客早已经不更新了,而且是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("", "");
	      tString = tString.replaceAll("", "");
	      tString = tString.replaceAll(" ", " ");
	      tString = tString.replaceAll(" ", " ");
	      tString = tString.replaceAll(">", ">");
	      tString = tString.replaceAll("<", "&lt;");
//	      tString = tString.replace("\"", "&quot;");
//	      tString = tString.replace("&amp;#91;", "&#91;");
//	      tString = tString.replace("&amp;#93;", "&#93;");
//	      tString = tString.replaceAll("\\[br\\]", "");
	      tString = tString.replaceAll("(\r\n|\n\r|\r|\n)", "");
	      String[][] tRegexAry = {
//	        {"\\[p\\]([^\\[]*?)\\[\\/p\\]", "$1"},
	        {"\\[b\\]([^\\[]*?)\\[\\/b\\]", "$1"},
	        {"\\[i\\]([^\\[]*?)\\[\\/i\\]", "$1"},
	        {"\\[u\\]([^\\[]*?)\\[\\/u\\]", "$1"},
	        {"\\[ol\\]([^\\[]*?)\\[\\/ol\\]", "
    $1
"}, {"\\[ul\\]([^\\[]*?)\\[\\/ul\\]", "
    $1
"}, {"\\[li\\]([^\\[]*?)\\[\\/li\\]", "
  • $1
  • "}, {"\\[code\\](.*?)\\[\\/code\\]", "
    $1
    "}, {"\\[quote\\]([^\\[]*?)\\[\\/quote\\]", "
    $1
    "}, {"\\[color=([^\\]]*)\\]([^\\[]*?)\\[\\/color\\]", "$2"}, {"\\[hilitecolor=([^\\]]*)\\]([^\\[]*?)\\[\\/hilitecolor\\]", "$2"}, {"\\[align=([^\\]]*)\\]([^\\[]*?)\\[\\/align\\]", "
    $2
    "}, {"\\[url=([^\\]]*)\\]([^\\[]*?)\\[\\/url\\]", "$2"}, {"\\[img\\]([^\\[]*?)\\[\\/img\\]", ""}, {"\\[down=([^\\]]*)\\]([^\\[]*?)\\[\\/down\\]", "$2"}, {"\\[mDown=([^\\]]*)\\]([^\\[]*?)\\[\\/mDown\\]", "$2"}, }; 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中,感觉还不错。

    上一篇: Spring MVC 类型转换(type convert)例子及下载
    下一篇: java正则表达式匹配多行文本
     评论 ( What Do You Think )
    名称
    邮箱
    网址
    评论
    验证
       
     

     


    • 微信公众号

    • 我的微信

    站点声明:

    1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

    2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

    3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号