[英]Php: How to replace src with different different content when multiple img tag exists in html using regex
我從ckeditor獲取html內容,並且有以下html內容
<p><strong>Hello</strong></p>
<p><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABVYAAAMACAIAA" style="height:131px; width:234px" /></p>
<p><strong>How are you</strong></p>
<p><img alt="" src="data:image/png;base64,ABAXKuVAAAAA3NCSVQICAjb4U/gAAAgAElEQV" style="height:142px; width:253px" /></p>
<p><strong>Good Morning</strong></p>
<p> </p>
現在我想用不同的圖像名稱替換每個圖像標簽的src
。 讓我們舉個例子
<p><strong>Hello</strong></p>
<p><img alt="" src="img.jpg" style="height:131px; width:234px" /></p>
<p><strong>How are you</strong></p>
<p><img alt="" src="test.jpg" style="height:142px; width:253px" /></p>
<p><strong>Good Morning</strong></p>
<p> </p>
圖像源是動態綁定的。 所以它可以是任何東西。替換后,我將此html內容保存到數據庫。
我已經完成了
$image_name ='<p><strong>Hello</strong></p>
<p><img alt="" src="img.jpg" style="height:131px; width:234px" /></p>
<p><strong>How are you</strong></p>
<p><img alt="" src="test.jpg" style="height:142px; width:253px" /></p>
<p><strong>Good Morning</strong></p>
<p> </p>';
$html = preg_replace('!(?<=src\=\").+(?=\"(\s|\/\>))!', 'img.jpg',$image_name );
但這將所有src替換為相同。
我希望除<img>
標簽的src
之外的全部內容相同。 我需要使用正則表達式替換此內容。 我更喜歡正則表達式,因為我想將此替換的html保存到數據庫中。 如果有其他解決方案,那也很好。
我已經將DOM分析器用作注釋中的建議。 以下是我的
$image_name = '<p><strong>Hello</strong></p>
<p><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABVYAAAMACAIAA" style="height:131px; width:234px" /></p>
<p><strong>How are you</strong></p>
<p><img alt="" src="data:image/png;base64,ABAXKuVAAAAA3NCSVQICAjb4U/gAAAgAElEQV" style="height:142px; width:253px" /></p>
<p><strong>Good Morning</strong></p>
<p> </p>';
$doc = new DOMDocument();
$doc->loadHTML($image_name);
$img_tags = $doc->getElementsByTagName('img');
$i=0;
foreach ($img_tags as $t )
{
$savepath = 'img_'.$i.'jpg';
$t->setAttribute('src',$savepath);
$i++;
}
$cont = $doc->saveHTML();
這給了我適當的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.