Модификация кода для объединения двух его частей со схожими характеристиками - PullRequest
0 голосов
/ 26 июня 2011

Ниже представлен сканер ссылок, который получает URL страницы на заданной глубине. В конце я добавил регулярное выражение, чтобы соответствовать всем электронным письмам URL, который только что просканирован. Как вы можете видеть во второй части, это file_get_content та же самая страница, которую она только что загрузила, что означает удвоенное время выполнения, пропускную способность и т. Д.

Вопрос в том, как объединить эти две части, чтобы использовать первую загруженную страницу, чтобы не получить ее снова? Спасибо.

function crawler($url, $depth = 2) {

    $dom = new DOMDocument('1.0');
    if (!$parts || !@$dom->loadHTMLFile($url)) {
        return;
    }
.
.
.

//this is where the second part starts

  $text = file_get_contents($url);
  $res = preg_match_all("/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i", $text, $matches);

}

1 Ответ

0 голосов
/ 26 июня 2011

Заменить:

$text = file_get_contents($url);

с:

$text = $dom->saveHTML();

http://www.php.net/manual/en/domdocument.savehtml.php

Кроме того, в первой части вашей функции вы можете сохранить HTML-код в переменную, используя file_get_contents, а затем передать его в $dom->loadHTML. Таким образом, вы можете повторно использовать переменную с вашим регулярным выражением.

http://www.php.net/manual/en/domdocument.loadhtml.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...