2015-01-02 66 views
1

我试图构建一个刮板来获取所有链接,我想避免外部链接,所以我有以下代码...简单的HTML Dom,如何在解析时避免外部链接(无需避免链接无主机url)

foreach($html->find('a') as $element) { 

     if (!in_array($element->href, $outputedUrls) && strpos($element->href, 'www.example.ie') !== false) { 
     echo 'LEVEL 1: '.$element->href . '<br>'; 
     $outputedUrls[] = $element->href; 

     get_links($element->href,$outputedUrls,1); 
     } 

} 

问题是,它工作得很好,它不包括链接,没有在href主要的网址,例如如果在主页上只是<a href="activities">activities</a>这不会包括在内。

我如何确保不包含外部链接,但包含网站一部分的链接都包含在内。谢谢

回答

0

您可以检查正则表达式的子域以及..这将解决该问题在一定程度上

if(preg_match("/^[A-Z0-9]+$/i", $subdomain)) { 
    echo "Valid sub domain"; 
    }else{ 
    echo "Not a valid sub domain."; 
    } 
+0

谢谢你,但我唯一的问题存在,我一直在读了一下,似乎普遍的共识是你不应该使用这种类型的正则表达式?或者我错误地选择了 – Adrian

+0

我真的很佩服你的研究,但有时候最好简化一下。只有问题,它有点慢,但你可以使用一些更好的正则表达式库,如[链接] http://php.net/manual/en/book.pcre.php,这将解决这个问题到一定的范围。你也可以找到许多其他的 –