2011-10-26 83 views
3

這是代碼示例工程通過標籤名獲得幾個元素和檢查元素標籤在一個循環呼應它

$doc->loadHTML($article_header); 
$imgs = $doc->getElementsByTagName('img'); 
foreach ($imgs as $img) { 

$imgs$doc元素採取與標籤名img,然後我做一些操作。

現在我想getElementsByTagName> img或iframe,然後使用$ img檢查哪個元素是這個,如果是iframe或img則回顯。

如果可能,請修改我的代碼。

回答

8

您可以在DOM文檔使用XPath如下:

$doc->loadHTML($article_header); 
$xpath = new DOMXpath($doc); 

$imagesAndIframes = $xpath->query('//img | //iframe'); 

$length = $imagesAndIframes->length; 
for ($i = 0; $i < $length; $i++) { 
    $element = $imagesAndIframes->item($i); 

    if ($element->tagName == 'img') { 
     echo 'img'; 
    } else { 
     echo 'iframe'; 
    } 
} 
+0

非常感謝我們所有人,用你的邏輯! –

-1

最好使用以下方法,因爲通過使用此代碼,如果對象「$doc」中沒有「iframe」/「img」標記,則不會出現任何錯誤(正如您正在完美檢查使用 「count()」 功能)的任何元素的存在: -

$doc->loadHTML($article_header); 
$imgs = $doc->getElementsByTagName('img'); 
$iframes = $doc->getElementsByTagName('iframe'); 

if (count($imgs)) { 
    foreach ($imgs as $img) { 
     // Do some logic on "img" tag 
    } 
} 

if (count($iframes)) { 
    foreach ($iframes as $iframe) { 
     // Do some logic on "iframe" tag 
    } 
} 

希望它能幫助。

+0

抱歉,但我要求有點不同的東西 – David

+0

那麼,你如果沒有這個要求? –

+0

知識渴望從iframe中分離imgs,我不喜歡這樣。你的方法Jan-Henk我認爲對我更好,所以我選擇它 – David

相關問題