PHP несколько file_get_contents по данным предыдущего file_get_contents - PullRequest
0 голосов
/ 30 января 2012

Я нашел этот код для проверки ссылок в URL.

<?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>

Теперь я пытаюсь проверить те URL-адреса, которые я только что выбрал, и найти ссылки, содержащие «показывает».1008 * Если честно, я php noob, так что я не знаю с чего начать: (

С уважением, Барт

1 Ответ

2 голосов
/ 30 января 2012

Что-то вроде:

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);

Сделать это рекурсивным - снова вызвать функцию в самой функции.

...