2012-12-12 90 views
-5

可能重複:
Remove style attribute from HTML tags如何從PHP中的HTML文件中刪除所有<img>標籤中的所有'alt'屬性?

當前圖像看起來像

<img src="images/sample.jpg" alt="xyz"/> 

現在我想刪除目前所有這些alt標籤中的所有標籤在HTML文件中, PHP代碼本身應該替代所有的alt屬性外觀。 輸出應該像 <img src="images/sample.jpg" />只有 如何使用PHP?

在此先感謝

+3

[你嘗試過什麼?](http://whathaveyoutried.com) –

+0

你嘗試過什麼?你有沒有在PHP中讀過[DOM](http://php.net/dom)? – Touki

+3

+2 - 真的嗎?這個問題是什麼,值得upvote? –

回答

1

使用DOMDocument爲HTML解析/操作。下面的示例讀取HTML文件,從所有img標記中刪除alt屬性,然後打印出HTML。

$dom = new DOMDocument(); 
$dom->loadHTMLFile('file.html'); 

foreach($dom->getElementsByTagName('img') as $image) 
{ 
    $image->removeAttribute('alt'); 
} 

echo $dom->saveHTML(); // print the modified HTML 
+0

thnks @MrCode爲您的幫助。它爲我工作。 – PHPLover

0

閱讀文件。您可以使用file_get_contents()函數讀取文件

$fileContent = file_get_contents('filename.html'); 
$fileContent = preg_replace('/alt=\"(.*)\"/', '', $fileContent); 
file_put_contents('filename.html', $fileContent); 

確保您的文件是可寫的

+1

-1 for [using regexp](http://stackoverflow.com/a/1732454/1607098)。 - *版糾正了正則表達式* – Touki

+0

謝謝Touki。這可能不是最好的方式,但它的工作原理... – AndVla

0

對於有效的XHTML它應有的alt屬性。

像這樣的工作:

$xml = new SimpleXMLElement($doc); // $doc is the html document. 
foreach ($xml->xpath('//img') as $img_tag) { 
    if (isset($img_tag->attributes()->alt)) { 
     unset($img_tag->attributes()->alt); 
    } 
} 
$new_doc = $xml->asXML(); 
1

首先,您需要暫停要修改的文檔來源。目前還不清楚您是否要編輯服務器上的某些HTML文件,編輯請求生成的HTML輸出或什麼...

在這個答案中,我要跨過你如何到達HTML。它可能是file_get_contents('filename.html');some magic with output buffering

由於you don't want to parse HTML with regular expressions你需要使用一個解析器:

由於alt屬性是必需的HTML是有效的,如果你想「刪除」它,你必須將其設置爲空字符串。

這應該工作:

$doc = DOMDocument::loadHTML($myhtml); 
$images = $doc->getElementsByTagName('img'); 

foreach($images as $img) { 
    $image->setAttribute('alt', ''); 
} 

$myhtml = $doc->saveHTML(); 
相關問題