PHP多个file_get_contents对先前file_get_contents的数据

时间:2012-01-29 23:10:11

标签: php foreach file-get-contents

我发现此代码用于检查网址上的链接。

<?php
$url = "http://example.com";
$input = @file_get_contents($url);
$dom = new DOMDocument();
$dom->strictErrorChecking = false;
@$dom->loadHTML($input);
$links = $dom->getElementsByTagName('a');
foreach($links as $link) {
   if ($link->hasAttribute('href')) {
      $href = $link->getAttribute('href');
      if (stripos($href, 'shows') !== false) {
         echo "<p>http://example.com" . $href . "</p>\n";
      }
   }
}

?>

效果很好,它会显示包含“节目”的所有链接。 例如,上面的脚本找到3个链接,所以我得到:

<p>http://example.com/shows/Link1</p>
<p>http://example.com/shows/Link2</p>
<p>http://example.com/shows/Link3</p>

现在,我尝试做的是检查我刚刚提取的那些网址,以查找包含“节目”的链接。

说实话我是一个PHP菜鸟,所以我不知道从哪里开始:(

此致 巴特

1 个答案:

答案 0 :(得分:2)

类似的东西:

function checklinks($url){
$input = @file_get_contents($url);
$dom = new DOMDocument();
$dom->strictErrorChecking = false;
@$dom->loadHTML($input);
$links = $dom->getElementsByTagName('a');
foreach($links as $link) {
   if ($link->hasAttribute('href')) {
      $href = $link->getAttribute('href');
      if (stripos($href, 'shows') !== false) {
         echo "<p>" . $url . "/" . $href . "</p>\n";
         checklinks($url . "/" . $href);
      }
   }
}
}

$url = "http://example.com";
checklinks($url);

使其递归 - 在函数本身中再次调用该函数。