2011-10-16 59 views
1

我使用此代碼從使用domdocument的img標籤獲取alt屬性。如果頁面中的圖像沒有alt屬性,或者alt屬性爲空,則不能識別該圖像。我需要一些幫助來編寫條件來檢查空的alt屬性以及根本沒有。由於PHP domdocument if語句當img標籤沒有alt屬性或者alt屬性爲空時?

$name = trim($words->nodeName); 
    if($name == 'img') 
     { 
      $alt= $words->getAttribute('alt'); 
      if(!empty($alt)) 
     { 
    $this->matchedAnchors[$this->count]['alt']  = trim($words->getAttribute('alt')); 
+0

那麼你會得到一個錯誤?另外,嘗試使用'if(isset($ alt)&&!empty($ alt))' – animuson

回答

2

您可以使用XPath爲:

//img[normalize-space(@alt) != ''] 

例子:

$xml = <<< XML 
<ul> 
    <li><img alt="foo"/></li> 
    <li><img alt=" "/></li> 
    <li><img alt=""/></li> 
    <li><img /></li> 
</ul> 
XML; 

$dom = new DOMDocument; 
$dom->loadXML($xml); 
$xp = new DOMXPath($dom); 

foreach ($xp->query('//img[normalize-space(@alt) != ""]') as $img) { 
    echo $dom->saveXML($img); 
} 

將只打印

<img alt="foo"/> 

Demo on codepad

+0

我實際上確實需要找到img alts,它們都是空的以及有數據的,我最終在if後添加了else語句(!empty($ alt)),所以如果alt被發現爲空以根據需要處理它。謝謝你 – Anagio

+0

@Anagio在這種情況下,你可以簡單地查詢'// img [@alt]' – Gordon

+0

謝謝,你知道XPath與domdocument有什麼不同嗎? – Anagio