我需要将几个数据库条目中的所有/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" />