|
|
|
| Приветствую!
Пытаюсь написать функцию которая возвращает все исходящие ссылки с указаного сайта.
вот код:
<?
function get_num_links($url)
{
@$text = file_get_contents($url);
if (!$text)
return "Пусто";
$dom = substr($url, 7);
preg_match_all("/<a[\s\S]+href=(.*)>/isU", $text, $anchors);
$i=0;
for ($i; $i < count($anchors[1]); $i++){
$links = preg_replace('(\"|\')' ,"",$anchors[1][$i]);
echo $links;
}
}
get_link_number($url);
?>
|
выводит следущее:
http://мой сайт.ru
article.php?mode=remont&list=1 - внутреняя ссылка моего сайт
article.php?mode=tuning&list=2 -//-
racing.php?mode=all -//-
forum/ -//-
nav.php?mode=project -//-
article.php?mode=mer&list=3 -//-
visual.php?mode=show -//-
http://www.сайт не мой.ru/
http://www.сайт не мой2.com
Как мне получить ссылки только эти:
http://www.сайт не мой.ru/
http://www.сайт не мой2.com
а ссылки моего сайта нетрогать....
???
Гуру помогите! | |
|
|
|
|
|
|
|
для: webarray
(12.07.2007 в 12:11)
| | Исходящие ссылки =)
Можно вот так попробовать:
"#<a[\s\S]+href=(?!http://мой_сайт)(.*)>#isU"
Стоп.. чуть не так... минутку
Вот так правильнее будет: #<a[\s\S]+href=(?=http://(?!(?:www\.мой_сайт|мой_сайт)))(.*)>#isU | |
|
|
|
|
|
|
|
для: kasmanaft
(12.07.2007 в 12:30)
| | Огромное спасибо!
А как исключить домены 3 уровня, например:
shop.site.ru
рег выражение определяет его как исходящая ссылка, но это поддомен моего сайта.. | |
|
|
|
|
|
|
|
для: webarray
(12.07.2007 в 13:33)
| | Вот так, наверное:
#<a[\s\S]+href=(?=http://(?!(?:[a-z0-9-.]+\.)*mysite\.ru))(.*)>#isU | |
|
|
|
|
|
|
|
для: kasmanaft
(12.07.2007 в 15:48)
| | А как выводить наоборот, только ссылки заданного сайта | |
|
|
|