簡體   English   中英

php:當使用正則表達式在html中存在多個img標簽時,如何用不同的不同內容替換src

[英]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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM