php – 将两个img标记之间的中断数减少到一个

我需要减少多于一个< br>或者< br />两个图像之间的标签只有一个.它需要足够自由以在图像中遇到任何类型的属性信息,任何元素之间的任何类型的空白和两种形式的中断.请注意,我不想影响< br />标签前面或尾随< img>标签,只有两个图像之间的标签.

这就是我正在使用的:

$content = preg_replace('/(<img[^>]*>)+\s*?(<br\/?>\s*?)+\s*?(<img[^>]*>)+/is','$1<br/>$3',$content);

这是一个例子

    ...
    Some text here.<br>
    <br><img src="http://www.domain.tld/image1.jpg"><br>
    <img src="http://www.domain.tld/image2.jpg"><br><br/>
    <img src="http://www.domain.tld/image3.jpg">
</div>

该模式应仅替换2 x< br>. image2和image3之间的标签.

我不知道为什么我的模式不起作用,你能看出我不是吗?

谢谢你的帮助!

编辑
仅供参考,我无法控制$content中的原始素材.

解决方法:

这应该工作:

preg_replace('/(<img[^>]*>\s*)(<br\s*\/?>(\s*))*(?=<img)/si', '\\1<br/>\\3', $content);

相关文章

文章浏览阅读8.4k次,点赞8次,收藏7次。SourceCodester Onl...
文章浏览阅读3.4k次,点赞46次,收藏51次。本文为大家介绍在...
文章浏览阅读1.1k次。- php是最优秀, 最原生的模板语言, 替代...
文章浏览阅读1.1k次,点赞18次,收藏15次。整理K8s网络相关笔...
文章浏览阅读1.2k次,点赞22次,收藏19次。此网络模型提供了...
文章浏览阅读1.1k次,点赞14次,收藏19次。当我们谈论网络安...