2011-06-12 16 views
4

我在html中有圖像。我解析它到DOMDocument並開始使用它...使用nodeValue從domelement打印出html內容

$doc = new DOMDocument(); 
$doc->loadHTML($article_header); 

$imgs = $doc->getElementsByTagName('img'); 
foreach ($imgs as $img) { 
$container = $img->parentNode; 

if ($container->tagName != "a") { 
    $image_inside=utf8_decode($img->nodeValue); 
    echo "3".$image_inside; 
    die; 
} 
} 

此代碼工作正常行3獲取圖像。第6行明白這個「img」標籤上面沒有「a」標籤,第8行必須打印出我的初始圖像。但事情是我只看到沒有圖像標籤等「3」...

我做了檢查元素,沒有什麼是在那裏。只是「3」即將問世。爲什麼我不能打印出圖像?

+0

的可能重複[PHP + DOM文檔:?outerHTML的元素(http://stackoverflow.com/questions/5404941/php-domdocument-outerhtml-for-element) – Tomalak 2011-06-12 10:47:06

回答

6

你可以使用:

DOMDocument::saveXML($img); 

從PHP Documetation的saveXML()

$doc = new DOMDocument(); 
$doc->loadHTML($article_header); 

$imgs = $doc->getElementsByTagName('img'); 
foreach ($imgs as $img) { 
    $container = $img->parentNode; 

    if ($container->tagName != "a") { 
     echo utf8_decode($doc->saveXML($img)); 
     die; 
    } 
} 

如果你使用PHP 5.3.6您可以使用(從How to return outer html of DOMDocument?

$doc->saveHtml($img); 

注中提到的警告鏈接到的問題:

(.. )使用saveXml(),但是 會創建XML兼容標記。在<a>(<img>)元素的 的情況下,那不應該是 是一個問題。

+0

最有可能你要我找源從那個圖片標籤,但我想要的是找回整個「img」標籤html。這就是爲什麼我試圖使用 - > nodeValue但沒有任何反應 – David 2011-06-12 10:45:01

+0

@David:注意到,謝謝澄清。 – 2011-06-12 10:46:55

+0

@ Michael對不起,我在這樣的問題上是noobie,你能修改我的例子,以便圖像打印出來嗎? – David 2011-06-12 10:52:06