【发布时间】:2016-02-28 03:24:05
【问题描述】:
我有一组内容,其中一些<img> 标签被包装在一个跨度标签中,如<span class="the-image"><img src.... /></span>,但一些图像尚未包装。我想使用 preg_replace 创建一个正则表达式,将此包装器添加到所有没有它的 img 标签中。
【问题讨论】:
标签: php regex preg-replace
我有一组内容,其中一些<img> 标签被包装在一个跨度标签中,如<span class="the-image"><img src.... /></span>,但一些图像尚未包装。我想使用 preg_replace 创建一个正则表达式,将此包装器添加到所有没有它的 img 标签中。
【问题讨论】:
标签: php regex preg-replace
享受吧!
preg_replace('/(?!\<span\sclass="the-image"\>)(<img[\sA-Z"\-_=\/.\d]*\/\>)(?!\<\/span\>)/i','<span class="the-image"\>$0</span>',$code);
正则表达式示例和说明 https://regex101.com/r/cX8iL6/3
编辑
PHP preg_replace 示例
$code = <<< EOT
<span class="the-image"><img src="123" /></span><br />
<img src="1234" /><br />
<span class="the-image"><img src="blah/blah/blah" /></span>
EOT;
$code = preg_replace('/(?!\<span\sclass="the-image"\>)(<img[\sA-Z"\-_=\/.\d]*\/\>)(?!\<\/span\>)/i','<span class="the-image"\>$0</span>',$code);
/* $code will become this
<span class="the-image"><img src="123" /></span><br />
<span class="the-image"><img src="1234" /></span><br />
<span class="the-image"><img src="blah/blah/blah" /></span>
*/
EDIT 2将正则表达式更改为 PHP 以反映 OP 所需的答案
【讨论】:
<span ..><img src="..." ... />就会变成<span ..><img src="..." ... /></span>