2013-07-09 40 views
0

我有一個html內容如下。如何在php中使用正則表達式替換ALT中的ALT和TITLE文本

<img title="" style="float: none;margin-right: 10px;margin-top: 10px;margin-bottom: 10px;" src="http://www.mbatious.com/sites/default/files/imagecache/Large/Distchart.jpg" class="imagecache-Large" alt=""> 

我想用圖像文件(Distchart)的名稱替換空白的alt和標題文本。如何在PHP中使用preg_replace來做到這一點?執行替換操作後,html應該像

<img title="Distchart" style="float: none;margin-right: 10px;margin-top: 10px;margin-bottom: 10px;" src="http://www.mbatious.com/sites/default/files/imagecache/Large/Distchart.jpg" class="imagecache-Large" alt="Distchart"> 

回答

1

由於馬克西姆Kumpan表明它,最好的辦法是使用DOM:

$doc = new DOMDocument(); 
@$doc->loadHTML($html); 
$imgs = $doc->getElementsByTagName('img'); 
foreach($imgs as $img) { 
    if (preg_match('~[^/]+(?=\.(?>gif|png|jpe?+g)$)~i', $img->getAttribute('src'), $match)) { 
     $name = $match[0]; 
     if ($img->getAttribute('alt')=='') $img->setAttribute('alt', $name); 
     if ($img->getAttribute('title')=='') $img->setAttribute('title', $name); 
    } 
} 
$result = $doc->saveHTML(); 
0

您可能最好使用DOMDocument。正則表達式的HTML是一項不值得的任務。

0

嘗試這個

$oldhtml = '<img title="" style="float: none;margin-right: 10px;margin-top: 10px;margin-bottom: 10px;" src="http://www.mbatious.com/sites/default/files/imagecache/Large/Distchart.jpg" class="imagecache-Large" alt="">' 

$newhtml = str_replace($oldhtml, 'alt=""', 'alt="Distchart"'); 
相關問題