我有一个简单的PHP Simple HTML DOM Parser设置来获取外部dofollow链接并获取所有内部链接并打印结果:
$url = "http://example.com";
$domain = parse_url($url, PHP_URL_HOST);
$html = new simple_html_dom();
$html->load_file($url);
$result = array();
$result1 = array_unique($result);
foreach($html->find('a') as $a){
$href = $a->href;
if (strpos($href, '://')!==false AND strpos($href, $domain)==false AND isset($e->rel)==false)
{ $result1[] = $href; echo $href.'<br />';}
}
foreach($html->find('a') as $a){
$href = $a->href;
if (strpos($href, '://')==false or strpos($href, $domain)!==false)
{ $result1[] = $href; echo $href.'<br />';}
}
由于某种原因,array_unique
无效,打印的内部链接列表包含重复项。
如何让它发挥作用?
答案 0 :(得分:0)
嗯,实际上在脚本的最后,$ result1数组不是唯一的,因为你在创建它之前创建它并且从$ result是一个空数组。 正如@Deep所说,你需要在推送所有项目后将其放入
试试这个:
...
$result = array();
foreach($html->find('a') as $a){
$href = $a->href;
if (strpos($href, '://')!==false AND strpos($href, $domain)==false AND isset($e->rel)==false)
{ $result[] = $href; echo $href.'<br />';}
}
foreach($html->find('a') as $a){
$href = $a->href;
if (strpos($href, '://')==false or strpos($href, $domain)!==false)
{ $result[] = $href; echo $href.'<br />';}
}
$result1 = array_unique($result);
...