【问题标题】:Cleanup old database full of html tags清理充满 html 标签的旧数据库
【发布时间】:2012-04-30 04:27:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: mysql html regex replace


    【解决方案1】:

    这是我在“预渲染清理”过程中从类似的数据库情况(正在存储的 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 标记及其属性。祝你好运!

    【讨论】:

    • 我想这真的可以做到。 &lt;p[^&gt;]*&gt; 部分是我最害怕的部分,它似乎可以满足我的需要,所以谢谢!
    • 是的,在没有回滚的更新查询之后真的没有回头路了哈哈哈——很高兴它奏效了!
    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2011-04-11
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多