需要将 img src 替换为模板代码


Need to replace img src with a template code

我需要将几个数据库条目中的所有/media/* url 替换为{{media url=URL}}

我有以下测试。

<img src="/media/wysiwyg/nutritionfacts/NLAHCLEA00600000CP.jpg" alt="NLA for Her Her Cleanse 60ct" />
<img src="/wysiwyg/nutritionfacts/NLAHCLEA00600000CP.jpg" alt="NLA for Her Her Cleanse 60ct" />
<img src="/nutritionfacts/NLAHCLEA00600000CP.jpg" alt="NLA for Her Her Cleanse 60ct" />
<img src="/media/wysiwyg/nutritionfacts/NLAHCLEA00600000CP.jpg" alt="NLA for Her Her Cleanse 60ct" />

我正在尝试使用以下正则表达式

<img.+?src='"'/media(.+?)['"'].*?>/g

最终结果应该是这样的:

<img src="{{media url="/wysiwyg/nutritionfacts/NLAHCLEA00600000CP.jpg}}" alt="NLA for Her Her Cleanse 60ct" />

我打算使用 php 的preg_replace

我应该使用什么来让正则表达式查找和替换 url? 我试图在这里弄清楚:https://regex101.com/r/kF3gI1/1

所以我继续假设所有条目都将使用双引号来包装图像 URL。这是我用来测试的代码:

$tests = array(
    '<img src="/media/wysiwyg/nutritionfacts/NLAHCLEA00600000CP.jpg" alt="NLA for Her Her Cleanse 60ct" />',
    '<img src="/wysiwyg/nutritionfacts/NLAHCLEA00600000CP.jpg" alt="NLA for Her Her Cleanse 60ct" />',
    '<img src="/nutritionfacts/NLAHCLEA00600000CP.jpg" alt="NLA for Her Her Cleanse 60ct" />',
    '<img src="/media/wysiwyg/nutritionfacts/NLAHCLEA00600000CP.jpg" alt="NLA for Her Her Cleanse 60ct" />',
);
foreach ($tests as $str) {
    echo preg_replace("/<img.+?src='"(.+?)'"/","<img src='"{{media url='"$1'"}}'"",$str)."'r'n";
}

以下是结果:

<img src="{{media url="/wysiwyg/nutritionfacts/NLAHCLEA00600000CP.jpg"}}" alt="NLA for Her Her Cleanse 60ct" />
<img src="/wysiwyg/nutritionfacts/NLAHCLEA00600000CP.jpg" alt="NLA for Her Her Cleanse 60ct" />
<img src="/nutritionfacts/NLAHCLEA00600000CP.jpg" alt="NLA for Her Her Cleanse 60ct" />
<img src="{{media url="/wysiwyg/nutritionfacts/NLAHCLEA00600000CP.jpg"}}" alt="NLA for Her Her Cleanse 60ct" />