mysql - 清理充满 html 标签的旧数据库

标签 mysql html regex replace

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

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

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

最佳答案

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

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

请注意:“BLOCK OF HTML TO CLEAN” 不应解释为一个字符串文字,而只是一个注释,上面写着“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 标签及其属性。祝你好运!

关于mysql - 清理充满 html 标签的旧数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214831/

相关文章:

html - 有没有办法在不影响 <div> 兄弟内容的情况下将单个 <div> 内容垂直居中?

javascript - 如何用 javascript 中的随机数替换每个破折号 (-)?

python - 如何使用正则表达式找到最短的重叠匹配?

mysql - 从mysql获取满足条件的行数以及1次查询中的最大值

javascript - Jquery: fadeIn() a div in rows of divs: Visible divs should be pushed to the right.

javascript - 具有多个带有过期计时器的对象的数组失败

sql - REGEXP_REPLACE - 仅当包含在 () 中时才从字符串中删除新行\n

mysql - 从 sql 数据库中选择不同语言的条目的最新版本

mysql - 按日期分组并合并 3 个表中的数据

PHP 文件不会在新的 xampp 安装上运行