2011-09-14 11 views
3

PHP DOMオブジェクトを使用してアンカータグ内にあるすべてのimgタグを抽出したいと思います。アンカータグ内のすべてのimgタグを抽出するにはどうすればよいですか?

私は以下のコードで試していますが、アンカータグをすべて取得していて、imgタグの内側にテキストが空白になっています。

function get_links($url) { 

    // Create a new DOM Document to hold our webpage structure 
    $xml = new DOMDocument(); 

    // Load the url's contents into the DOM 
    @$xml->loadHTMLFile($url); 

    // Empty array to hold all links to return 
    $links = array(); 

    //Loop through each <a> tag in the dom and add it to the link array 
    foreach($xml->getElementsByTagName('a') as $link) 
    { 
     $hrefval = ''; 
     if(strpos($link->getAttribute('href'),'www') > 0) 
     { 
      //$links[] = array('url' => $link->getAttribute('href'), 'text' => $link->nodeValue); 
      $hrefval = '#URL#'.$link->getAttribute('href').'#TEXT#'.$link->nodeValue; 
      $links[$hrefval] = $hrefval; 
     } 
     else 
     { 
      //$links[] = array('url' => GetMainBaseFromURL($url).$link->getAttribute('href'), 'text' => $link->nodeValue); 
      $hrefval = '#URL#'.GetMainBaseFromURL($url).$link->getAttribute('href').'#TEXT#'.$link->nodeValue; 
      $links[$hrefval] = $hrefval; 
     } 
    } 

    foreach($xml->getElementsByTagName('img') as $link) 
    { 
     $srcval = ''; 
     if(strpos($link->getAttribute('src'),'www') > 0) 
     { 
      //$links[] = array('src' => $link->getAttribute('src'), 'nodval' => $link->nodeValue); 
      $srcval = '#SRC#'.$link->getAttribute('src').'#NODEVAL#'.$link->nodeValue; 
      $links[$srcval] = $srcval; 
     } 
     else 
     { 
      //$links[] = array('src' => GetMainBaseFromURL($url).$link->getAttribute('src'), 'nodval' => $link->nodeValue);  
      $srcval = '#SRC#'.GetMainBaseFromURL($url).$link->getAttribute('src').'#NODEVAL#'.$link->nodeValue; 
      $links[$srcval] = $srcval; 

     } 
    } 

    //Return the links 
    //$links = unsetblankvalue($links); 
    return $links; 
} 

これは、アンカータグとすべてのimgタグを別々に返します。

答えて

6
$xml = new DOMDocument; 
libxml_use_internal_errors(true); 
$xml->loadHTMLFile($url); 
libxml_clear_errors(); 
libxml_use_internal_errors(false); 
$xpath = new DOMXPath($xml); 
foreach ($xpath->query('//a[contains(@href, "www")]/img') as $entry) { 
    var_dump($entry->getAttribute('src')); 
} 
+0

を使用していますが、決算paranthesisを逃しました。 – Herbert

+0

hehe、fixed 321 – cloakedninjas

+0

しかし、このコードでは、特定のアンカーが特定のimgタグを持っているかどうかを確認するにはどうすればよいですか? – Bajrang

0

strpos()関数の使用方法がコードで正しくありません。

代わりのnitpickerではないと

if(strpos($link->getAttribute('href'),'www') > 0) 

使用

if(strpos($link->getAttribute('href'),'www')!==false) 
関連する問題