1

我将 HTML 存储在 MySQL 数据库中,我正在从 Joomla 迁移到新的 WordPress 安装。我需要删除每页底部的一些标题文本。

HTML 的一个例子:

<a href="some/link">link 1</a><p>some really long description</p><a href="another/link">link 2</a>CAPTION TEXT HERE[/caption]

我正在使用 PHP 脚本来查询数据库并进行正则表达式匹配。

到目前为止我的正则表达式:

/(<\/a>)(.*?)(\[\/caption\])/

我需要完全删除第二个字幕组(CAPTION TEXT HERE),因此实质上将组 1,2 和 3 替换为组 1 和 3。组 2 可以包含任何字母数字或特殊字符。

我遇到的问题是捕获组 1 匹配链接 1 的结束锚标记并继续直到[/caption]

会发生什么:

</a><p>some really long description</p><a href="another/link">link 2</a>CAPTION TEXT HERE[/caption]

被替换为:

<a href="some/link">link 1</a>[/caption]

当我真正需要的是:

<a href="some/link">link 1</a><p>some really long description</p><a href="another/link">link 2</a>[/caption]

先感谢您!

4

1 回答 1

1

男性不包括>在匹配的文本中

(<\/a>)([^>]*?)(\[\/caption\])

演示

于 2015-06-24T17:16:21.587 回答