Php: сбор ссылок со страницы

pastuhoff
На сайте с 29.10.2005
Offline
229
1528

Коллеги, подскажите класс для работы со ссылками.

Задача: собрать со страницы все ссылки, включая внутренние (с учетом тега base), переделав их в абсолютные.

Коллекционер доменных имен.
siv1987
На сайте с 02.04.2009
Offline
427
#1

DOM, регулярные выражения.

Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#2

phpQuery

10 символов

TF-Studio
На сайте с 17.08.2010
Offline
334
#3

Поиском - совсем лениво пользоваться?

/ru/forum/505460

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
pastuhoff
На сайте с 29.10.2005
Offline
229
#4

TF-Studio, не нашел там ответа на свой вопрос.

Алексей Барыкин, спасибо, но есть подозрения, что это не самый быстрый вариант.

siv1987, не хочется изобретать велосипед, накосячив в процессе.

dma84
На сайте с 21.04.2009
Offline
168
#5


$doc = new DomDocument();
$doc->loadHTML('<?xml version="1.0" encoding="UTF-8">'.$html);
$doc->normalize();

$nodes = $doc->getElementsByTagName('A');
foreach($nodes as $node)
{
echo $node->nodeValue, ' - ', $node->getAttribute('href'), "\n"
}
S
На сайте с 11.03.2010
Offline
29
#6

Так я получал все ссылки

preg_match_all("/<(a|link|script|img).*(href|src|url){1}[\s]*(=){1}[\s]*('|\"){1}(?:(?!mailto)([^\"'#\\\]+))(\\4){1}.*>/isU", $content, $match);
$links = $match[5];

Потом смотрел, есть ли "/" или "?" в начале, чтобы решить прибавлять ссылку к url страницы или

считать ее корневой, или мониторить

preg_match('/^(http|https|ssl):\/\//i', $value)
внешнюю ссылку
pastuhoff
На сайте с 29.10.2005
Offline
229
#7

Благодарю за ответы.

Но нужен готовый отлаженный вариант, который правильно обработает (в том числе) такую страничку:

<html>

<head>

<base href='http://a.a/b/c/'>

</head>

<body>

<a href='../d'>link</a>

<a href='e/'>link</a>

</body>

</html>

и выдаст такой результат:

http://a.a/b/d

http://a.a/b/с/e/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий