0

URLの配列が渡される関数があります。各Webページには、他のページへの一連のリンクがあります。この関数に渡されるすべてのWebページからこれらのリンクの完全なリストを返したいです。各ループで配列を組み合わせる方法に固執しています。

 function getitemurls ($pagelinks) {
 global $host;
 foreach($pagelinks as $link) {
   $circdl = my_curl($link);
   $circqp = htmlqp($circdl,'body');
   $circlinks = array();
   foreach ($circqp->branch()->top('area[href]') as $item) {
   $circlinks[] = $item->attr('href');
    }
   for ($i = 0; $i < count($circlinks); ++$i) {
   $fullitemurl = join(array($host,$circlinks[$i]));
   }
    }
  return $fullitemurl;
 }

例えば:

 Webpage 1: page1.html
 <html><body><area shape="rect" href="http://www.google.com" coords="110,151,173,225" alt=""/></body></html>

 Webpage 2: page2.html
      <html><body><area shape="rect" href="http://www.yahoo.com" coords="110,151,173,225" alt=""/></body></html>

2つのページの配列は次のとおりです。

 $array = array (
"0" => "page1.html",
"1" => "page2.html", );

この配列から私は戻りたいと思います:

 getitemurls($array)
 Array ( [0] => http://www.google.com [1] => http://www.yahoo.com)
4

1 に答える 1

0

ループの前に配列を宣言し、ループ内でそのように割り当てるだけになりました。

 function getitemurls ($pagelinks) {
  global $host;
  $fullitemurls = array();
  foreach($pagelinks as $link) {
   $circdl = my_curl($link);
   $circqp = htmlqp($circdl,'body');
   $circlinks = array();
   foreach ($circqp->branch()->top('area[href]') as $item) {
    $circlinks[] = $item->attr('href');
   }
   for ($i = 0; $i < count($circlinks); ++$i) {
    $fullitemurl[] = join(array($host,$circlinks[$i]));
   }
  }
 return $fullitemurl;
}
于 2012-09-13T12:23:08.217 に答える