正则表达式找到DIV标签并检索图像名称

时间:2017-07-24 12:19:08

标签: html regex wordpress

我必须将数千个链接替换为Photobucket上托管的图像,并将链接更改为其他托管站点。这些链接包含在Wordpress站点的帖子中。也就是说,我必须找到以下语法:

<div style="clear: both; text-align: center;"><a href="http://photobucket.com/albums/mypath/IMAGENAME.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="photobucket.com/albums/mypath/IMAGENAME.jpg" /></a></div>

mypath可以变化,并用

替换整个DIV标记
<img class="alignnone size-full aligncenter" src="http://mynewpath/IMAGENAME.jpg" alt="" />

我找到了WordPress的Search Regex plugin,它允许大量搜索&amp;使用RegEx替换。不幸的是,我无法创建足够的RegEx来仅识别我想要的DIV标签。我想出了这个:

<div\b[^>]*>.*?<img.*?photobucket.*?\/(.*?\.jpg).*?<\/div>

大部分时间都有效。但是,它有时会捕获连续的DIV个标记对。如何确保捕获单个DIV标记并捕获内部的图像名称?

PS:我知道不建议使用RegEx解析HTML,但搜索Regex插件是我找到解决问题的最快方式。

编辑:为清晰起见编辑了示例

1 个答案:

答案 0 :(得分:0)

你可以使用jQuery为你做这件事。 由于您无法访问SQL以进行搜索和替换。

假设你有这样的网址http://replaceThis.com/somethingSomething 使用下一个jQuery,您可以替换该URL的所有实例:

if (value.toString().indexOf('.') === -1) {
  value = value.toFixed(1);
}

编辑:

您可以使用http://api.jquery.com/unwrap/ 您可以检查此元素是否具有父div以及是否打开它。