我不太擅长这个REGEX字符串替换,但我认为这个问题可以用它来解决…
我想替换这个:
<a href="http://www.example.com">
<img alt="" class="aligncenter size-full wp-image-112" height="300" src="http://www.example.comsample1.png" title="sample1" width="300" /></a>有了这个:
<p style="text-align:center;"><a href="http://www.example.com">
<img alt="" class="aligncenter size-full wp-image-112" height="300" src="http://www.example.comsample1.png" title="sample1" width="300" /></a></p>还有这个(如果没有给出链接):
<img alt="" class="aligncenter size-full wp-image-112" height="300" src="http://www.example.comsample1.png" title="sample1" width="300" />有了这个:
<p style="text-align:center;">
<img alt="" class="aligncenter size-full wp-image-112" height="300" src="http://www.example.comsample1.png" title="sample1" width="300" /></p>我怎么才能让它工作呢?(搜索关键字是‘class=’对齐中心',如果这个存在于IMG标签中,那么我需要替换)
可能会有许多IMG或标签需要替换,而不只是一个!
非常感谢!
发布于 2012-01-18 18:25:44
您可能需要两个正则表达式,一个用于img (确保在<img />标记之前或之后没有<a,什么是look ahead,您将需要负向前看断言,因此它将如下所示:
$text = preg_replace( '~<img alt="" class="aligncenter size-full wp-image-112"([^<>]+)/>\s*(?!</a)~mi', '<p style="text-align:center;">\0</p>', $text);m将匹配\s*中的新行,i使正则表达式不区分大小写,\0引用整个匹配的文本
<a ...><img />的替换将类似于:
$text = preg_replace( '~<a href="([^"]+)"><img alt="" class="aligncenter size-full wp-image-112"([^<>]+)/>\s*</a>~mi', '<p style="text-align:center;">\0</p>', $text);https://stackoverflow.com/questions/8908357
复制相似问题