修改代码以合并具有相似特征的两部分

时间:2011-06-26 04:42:11

标签: php regex dom

下面是一个链接抓取工具,它可以获取给定深度的网页网址。最后,我添加了一个正则表达式来匹配刚抓取的网址的所有电子邮件。正如您在第二部分中看到的那样,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 :(得分:0)

替换:

$text = file_get_contents($url);

使用:

$text = $dom->saveHTML();

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

或者,在函数的第一部分中,您可以使用file_get_contents将HTML保存到变量中,然后将其传递给$dom->loadHTML。这样,您就可以将该变量与正则表达式一起重用。

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