清理旧的数据库充满了HTML标签

时间:2012-04-18 17:37:41

标签: mysql html regex replace

我正在将我客户端的旧mysql数据库移动到一个新的wordpress系统(旧版本也是wp),我注意到他的文章全部保存了大量的HTML <p></p>标签。由于直接从MS Word导入内容而导致的不同样式。我已经说服客户使用Paste From Word并在保存新文章之后清理他的文章。

现在,是否有任何安全方法可以删除所有已保存的代码<p style="different_styles_every_time"></p>,而不会留下垃圾并希望保留原始换行符?

我已经开始研究正则表达式,但是这里有很多答案建议不要使用它来解析HTML。有线索吗?

1 个答案:

答案 0 :(得分:1)

这是一个安全的过程,我在一个类似的DB情况(存储的html)的“预渲染清理”过程中使用它不幸用Java编写,但概念(和使用的正则表达式)可以应用于SQL更新查询。

一个注意事项是我建议不要在执行此操作之前进行备份,而是在数据库的“安全”版本上进行测试。当然,对于这种规模的任何更新程序,您可能已经知道风险。

注意: “要清除的HTML块 不应被解释为一个字符串文字,而只是一个说明“displayContent是保存DB的html结果的变量,在这种情况下只是循环中结果集的1次迭代。

String displayContent = "THE BLOCK OF HTML TO CLEAN";
String tagregex = "<p[^>]*>";
Pattern p2 = Pattern.compile(tagregex);
Matcher m2 = p2.matcher(displayContent);
displayContent = m2.replaceAll("");
displayContent = displayContent.replaceAll("</p>", "");

您当然可以将此用于任何其他html标记及其属性。祝你好运!