Ребят. Как собрать все ссылки, которые есть на сайте, а так же файлы, картинки и другие?
Регуряное выражение уже написал.
А вот как это собрать с каждой странице, у меня не получается. Потому что надо учесть что бы не было дубликатов и что бы по каждой ссылке парсер прошелся одни раз.
Тут надо скорее всего рекурсивно проходить? Если да, то я что-то запутался в этой рекурсии.
Может уже кто готовое знает или уже кто писал на php?
ВОт что я пробовал написать:
getURL() - функция, которая скачивает файл. Я ее не стал сюда вписывать.
$arr_link = array();
function get_first_link($site){
$result = getURL($site);
$result = implode($result);
if($result === false){continue;}
preg_match_all("/<[Aa][\s]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\s]*([^ \"'>\s#]+)[^>]*>/", $result, $matches);
$urls = $matches[1];
$urls = array_unique($urls);
foreach($urls as $val){
// echo $val."<br />"; // вывожу все ссылки
$link = parse_url($val);
if(empty($link['host'])){
// $flag = in_array($val, $arr_link);
// if($flag === false){
$arr_link[] = SITE.$val;
// echo SITE.$val."<br />";
// }
//get_link($site.$val);
}
}
return $arr_link;
}
function get_second_link($arr){
foreach ($arr as $val) {
$result = getURL($val);
$result = implode($result);
//print_r($result);
preg_match_all("/<[Aa][\s]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\s]*([^ \"'>\s#]+)[^>]*>/", $result, $matches);
$all[] = $matches[1];
}
$urls = $all;
$urls = array_unique($urls);
print_r($urls);
}
// print_r(get_first_link(SITE));
$n = get_first_link(SITE);
get_second_link($n);