我有這個網站在我的數據庫:如何刪除特定的DOM元素與PHP的DOMDocument
<p>some text 1</p>
<img src=\"http://www.example.com/images/some_image_1.jpg\">
<p>some text 2</p>
<p>some text 3</p>
<img src=\"http://www.example.com/images/some_image_2.jpg\">
<p>some text 4</p>
<p>some text 5</p>
<img src=\"http://www.example.com/images/some_image_3.jpg\">
有條件,我需要刪除一些具體<img>
標籤。所以我不想刪除所有<img>
標籤,但只有特定的標籤。
我已經試過這一點,但它會刪除所有<img>
標籤,即使我不希望出現這種情況:
$dom = new \DOMDocument;
$dom->preserveWhiteSpace = false;
$dom->loadHTML($html);
$nodes = $dom->getElementsByTagName("img");
for($i = 0; $i < $nodes->length; $i++) {
if ($i == 1) {
continue;
}
$image = $nodes->item($i);
$image->parentNode->removeChild($image);
}
return $dom->saveHTML();
有人可以幫助我?在這個html例子中,假設我想刪除文本中的第一個和第三個圖像,但是要留下第二個。
此外,我已經注意到saveHTML()
方法是將<html><body>
標記添加到我的html,我不希望這樣。我沒有看到任何關閉此選項的選項。那裏有幫助嗎?
在此先感謝,我堅持了幾個小時。
由於某種原因,您的代碼會保留第二張和第三張圖片。我找到了一種使它工作的方法。在for循環中,我創建要刪除的圖像數組。然後在其他foreach循環中,我會遍歷該數組並刪除圖像。 – offline
是的,第二個圖像將保持在代碼之上,但不是第三。所以你需要確保2沒有被添加到這個數組中。 '$ remainingImages = array(1);' –
它不按預期工作。看看這裏:http://phpfiddle.org/main/code/rkim-st8w,運行代碼。 – offline