如何使用 REGEX 大量删除 WordPress 帖子中应用的旧样式?

再会!


我有一个大型杂志网站,刚刚从 Divi 迁移到 X Pro。每个帖子内都有对另一个帖子的建议。总共有超过 10,000 个帖子,所以这不是编辑者可以在每个帖子中手动修复的问题。该元素已添加到帖子内容中。


<blockquote>

<h3>Te sugerimos</h3>

<p class="entry-title"><a href="https://example.com/post-title/" target="_blank" rel="noopener noreferrer" style="outline: none;"><strong>POST TITLE</strong></a></p>

</blockquote>

它应该只是一个h3标签,然后是一个p没有该类的标签entry-title,当然,也没有该blockquote标签。


该代码只是帖子的一部分。回到旧的 Divi 网站,编辑通常使用本机 WP WYSIWYG 编辑器撰写帖子。是迪维,出于我不知道的原因,应用了所有这些……风格?无论如何,一旦我完成迁移,所有内容都会传递到这个基于 X-Pro 的网站。


在这里,我检查了 WP WYSIWYG 中的每一篇文章,它们看起来很正常,当我在网上看到任何文章时,它都有那么大的文本块。当我检查帖子编辑器中的 HTML 选项卡时,我看到了所有垃圾代码。


为了摆脱这一切,我正在考虑使用 REGEX,但老实说,我不知道如何告诉 REGEXclass="entry-title"从p标签内的标签中删除每个标签blockquote,我也会删除它,但前提是它有里面的所有这些元素。


这将是一个救星。我在这里要疯了。


提前致谢!


临摹微笑
浏览 105回答 1
1回答

月关宝盒

首先我们定义匹配正则表达式(PCRE 兼容):~<blockquote>\s*(.+?)<p class="entry-title">(.+?)<\/blockquote>~s请参阅RegExr现场直播;点击“解释”即可理解该表达式。然后我们的替代品:\1<p>\2然后,这是一个添加了周围内容的测试块:<blockquote><h3>Te sugerimos</h3><p class="entry-title"><a href="https://example.com/post-title/" target="_blank" rel="noopener noreferrer" style="outline: none;"><strong>POST TITLE</strong></a></p></blockquote><p>Other stuff</p><blockquote>Not matched</blockquote>当应用上面的正则表达式时,例如在 中preg_replace($pattern, $replace, $content),上面的块将转换为:<h3>Te sugerimos</h3><p><a href="https://example.com/post-title/" target="_blank" rel="noopener noreferrer" style="outline: none;"><strong>POST TITLE</strong></a></p><p>Other stuff</p><blockquote>Not matched</blockquote>我认为这是您想要的输出。现在,如何将其应用到您的所有内容?您有三个基本选择:使用 MySQL 的REGEXP_REPLACE函数——无论是在终端、PHPMyAdmin 中还是从 PHP 脚本中。在 PHP 中处理清理:对具有此模式的所有帖子运行选择查询;然后用preg_replace;修改内容 最后更新数据库条目。下载数据库转储,在您最喜欢的文本编辑器(支持正则表达式)中打开它,或将其通过管道传输到您选择的工具中,并进行必要的替换;最后重新加载到您的数据库中。(发生这种情况时,您可能希望将站点置于维护模式!)无论您选择哪种方式执行此操作,请务必先备份数据。
打开App,查看更多内容
随时随地看视频慕课网APP