为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
临摹微笑 2024-01-19 15:38:15
再会!我有一个大型杂志网站,刚刚从 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,我也会删除它,但前提是它有里面的所有这些元素。这将是一个救星。我在这里要疯了。提前致谢!
查看完整描述

1 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

首先我们定义匹配正则表达式(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>

我认为这是您想要的输出。

现在,如何将其应用到您的所有内容?您有三个基本选择:

  1. 使用 MySQL 的REGEXP_REPLACE函数——无论是在终端、PHPMyAdmin 中还是从 PHP 脚本中。

  2. 在 PHP 中处理清理:对具有此模式的所有帖子运行选择查询;然后用preg_replace;修改内容 最后更新数据库条目。

  3. 下载数据库转储,在您最喜欢的文本编辑器(支持正则表达式)中打开它,或将其通过管道传输到您选择的工具中,并进行必要的替换;最后重新加载到您的数据库中。(发生这种情况时,您可能希望将站点置于维护模式!)

无论您选择哪种方式执行此操作,请务必先备份数据。


查看完整回答
反对 回复 2024-01-19
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信