2016-07-12 5 views
0

ウェブページから画像のURLを取得したい。私のコードは機能しません。私はここで間違いを見つけることができませんでした。それは空の配列を返します。ランダムなウェブサイトを試みました。 URLは返されません。他のウェブサイトから画像のURLを取得すると、コードが機能しない

function get_links($url) { 
 

 
     
 
     $xml = new DOMDocument(); 
 

 
     
 

 
     libxml_use_internal_errors(true); 
 

 
if (!$xml->loadHTML($url)) 
 
    { 
 
     $errors=""; 
 
     foreach (libxml_get_errors() as $error) { 
 
      $errors.=$error->message."<br/>"; 
 
     } 
 
     libxml_clear_errors(); 
 
     print "libxml errors:<br>$errors"; 
 
     return; 
 
    } 
 

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

 
     //Loop through each <img> tag in the dom and add it to the link array 
 
     foreach ($xml->getElementsByTagName('img') as $link) { 
 
      $url = $link->getAttribute('src'); 
 
      if (!empty($url)) { 
 
       $links[] = $link->getAttribute('src'); 
 
      } 
 
     } 
 

 
     //Return the links 
 
     return $links; 
 
}

+1

*デバッグの助けを求める質問(** "なぜこのコードは動作しないの?" **)**必須** **特定の問題**または**エラー**と、質問自体にそれを再現するために必要な最短のコードを含める。質問なし**明確な問題文なしで他の読者には役に立たない* – Script47

答えて

0

は期待HTML文字列

<?php 

function get_links($url) { 

    $xml = new DOMDocument(); 

    libxml_use_internal_errors(true); 

    $html = file_get_contents($url); 

    if(!$xml->loadHTML($html)) { 
     $errors=""; 
     foreach (libxml_get_errors() as $error) { 
      $errors.=$error->message."<br/>"; 
     } 
     libxml_clear_errors(); 
     print "libxml errors:<br>$errors"; 
     return; 
    } 

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

    //Loop through each <img> tag in the dom and add it to the link array 
    foreach ($xml->getElementsByTagName('img') as $link) { 
     $url = $link->getAttribute('src'); 
     if (!empty($url)) { 
      $links[] = $link->getAttribute('src'); 
     } 
    } 

    //Return the links 
    return $links; 
} 

/* $cc = get_links('type your url here'); */ 
+0

ありがとうございます – anor

+0

@anor、それがあなたのために働くなら、答えを受け入れるようにしましたか? –

関連する問題