用java 代码将 ubb编辑器转为ueditor 编辑器 的 html格式
By:Roy.LiuLast updated:2013-11-28
一直以来,在抽空余的时间打算升级自己的博客,因为原来的开源博客早已经不更新了,而且是asp写的。编辑器是 ubb 编辑器, 而我现在打算使用百度 ueditor,这是一个标准的HTML编辑器, 因此需要将博客的内容进行批量转换,也就是将UBB格式转换成HTML 格式,但同时要注意转换的HTML代码,不能产生XSS 注入,特别是有些博客内容有 javascript 代码的情况。
在网上找到一些方法:
一,站长站上有现成的工具,可以粘贴进去,测试,结果,确实可以转成HTML ,但一旦到Ueditor里面全乱了,而且也只能一个一个去做,方式也不可取。类似的工具页面太多了,一搜一大把.
二,在CSDN上下载了一个jar包,进行处理,结果,还是不满意。
三,没办法了,自己参考网上的资料,写适合自己的转换方法。后来发现,这个开源博客里面有一些自己定制的UBB标签,当然绝大多数是通用的。自己写的java代码如下:
$1 "},
{"\\[code\\](.*?)\\[\\/code\\]", "
然后又用java写了一个方法,读数据库中的内容,循环调用这个 decode 方法,结果发现,基本满足自己需要,样式也没有乱。成功转到ueditor中,感觉还不错。
在网上找到一些方法:
一,站长站上有现成的工具,可以粘贴进去,测试,结果,确实可以转成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("&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\\]", ""); 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
$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中,感觉还不错。
From:一号门
Previous:Spring MVC 类型转换(type convert)例子及下载
Next:java正则表达式匹配多行文本
COMMENTS