//Функция выпарсивания урлов в массив
$g_domen = parse_url($domain); //достаю хост из строки
function url_pars ($page,$url) {
$href_arr = array();
$html = str_get_html($page);
foreach($html->find('a') as $search_ahref){
$href = $search_ahref->href;
if (!eregi('#',$href) or !eregi('mailto:',$href) or eregi($g_domen['host'],$href)){
$href_arr[] = $href;
}
}
}
Вот я симпл домом тащу все ссылки с страницы которую передаю в функцию, задача стоит взять все только внутренние ссылки и не брать внешних. Я отсекаю хлам
if (!eregi('#',$href) or !eregi('mailto:',$href) or eregi($g_domen['host'],$href))
И вот не задача есть ссылки вида:
<a href="subfolder/page2.htm"> Для перехода на page2 щелкни здесь! </a>
<a href="../page1.htm"> Для перехода на page1 щелкни здесь! </a>
<a href="page2.htm"> Для перехода на page2 щелкни здесь! </a>
Ну понятно если ссылка сразу содержит $g_domen['host'] это я забираю в массив, а если вот такие хитрые конструкции я не понимаю как создать полную ссылку из относительных что я выше дал, да надо подставить хост ... но как быть с ../page1.htm или еще больше там может быть точек же. Путаница. Подскажите плз
Спустя 5 часов, 15 минут, 20 секунд (22.08.2012 - 06:03) Игорь_Vasinsky написал(а):
Цитата |
if (!eregi('#',$href) or !eregi('mailto:',$href) or eregi($g_domen['host'],$href)) |
eregi - устаревшая, используй preg_match()
тебе нужно отсекать все ссылки с http|https|ftp|mailto, при этом смотреть чтоб ссылки с протоколами http (https) - не были с твоим доменом
Спустя 10 часов, 46 минут, 50 секунд (22.08.2012 - 16:49) sx000 написал(а):
спасибо за совет а как быть все таки с сылками вот этими что я описал
Спустя 37 минут, 1 секунда (22.08.2012 - 17:26) vagrand написал(а):
sx000
если в ссылке не указан протокол, то она априори внутренняя.
если в ссылке не указан протокол, то она априори внутренняя.
Спустя 3 часа, 40 минут, 49 секунд (22.08.2012 - 21:07) sx000 написал(а):
так а кто спорит вопрос то не в этом!
Спустя 22 минуты (22.08.2012 - 21:29) Игорь_Vasinsky написал(а):
<?php
header("Content-Type: text/html; charset=utf-8");
$mydomen = 'hdkinozavr.ru';
$page = file_get_contents('http://hdkinozavr.ru');
preg_match_all("#<a.*href\s*\=\s*\"([^\"].*)\".*>(.*)</a>#iusU", $page, $links);
#Все ссылки
#echo '<pre>' . print_r($links[1], 1) . '</pre>';
foreach($links[1] as $link=>$anchor)
{
//Сразу отсеем ссылки без протоколов, они местные =) (протоколов больше ест-но)
if(substr_count($anchor, 'http://') == 0 AND substr_count($anchor, 'https://') == 0 AND substr_count($anchor, 'ftp://') == 0)
echo $anchor.'<br />';
//Ссылки с моим доменом
elseif(substr_count($anchor, $mydomen))
echo $anchor.'<br />';
//Всё остальное
else
echo $anchor.'<br />';
}
?>
Спустя 15 часов, 36 минут, 8 секунд (23.08.2012 - 13:05) sx000 написал(а):
ну у меня тоже самое только через симпл дом, проотколов тока надо добавить, я видимо вопрос не верно сформулировал.
Местные ссылки без указания протокола, мне надо их тоже собирать же они внутрение и по ним тоже ходить. Так вот если выгрести местную ссылку
Местные ссылки без указания протокола, мне надо их тоже собирать же они внутрение и по ним тоже ходить. Так вот если выгрести местную ссылку
<a href="subfolder/page2.htm"> Для перехода на page2 щелкни здесь! </a>тут понятно подставим просто домен и все.
<a href="../page1.htm"> Для перехода на page1 щелкни здесь! </a>а как поступать в таких случаях, ведь может быть и три точки ... что сюда подставлять?
Спустя 50 минут, 36 секунд (23.08.2012 - 13:56) Игорь_Vasinsky написал(а):
ОоО.. ты типа паука пишешь???
тут нужно парсить url - а если у тя ЧПУ - то алгоритм усложнаяется
тут нужно парсить url - а если у тя ЧПУ - то алгоритм усложнаяется
Спустя 34 минуты, 28 секунд (23.08.2012 - 14:30) sx000 написал(а):
угу урлы надо собирать с ресурса внутренние все