Определение количества внешних url, с учетом всех вариантов написания тега <a>

sumdex

Новичок
Определение количества внешних url, с учетом всех вариантов написания тега <a>

Здравствуйте


Вопросы:
1.Коректно ли я написал регулярное выражение?
Выражение работает, но хотелось бы услышать мысли специалистов.
2.Возможно ли стразу вырезать внешние ссылки в одном регулярном выражении.
(пусть domen.ru - сайт у которого, нужно определить кол-во внешних ссылок)

Описание задачи:
Есть задача вырезать все внешние (только внешние) url из тегов <a>:
(если в параметре href указан протокол http - то вероятность, что ссылка внешняя увеличивается, ссылки без http внешними не бывают)

Нужно учесть все варианты, а именно:

Вариант 1:
(url заканчивается знаком ">")
$content_3='<a href=http://www.ya.ru>ссылка</a>';

Вариант 2:
(url заканчивается символом ")
$content_3='<a href="http://www.ya.ru" class=asa>ссылка</a>';

Вариант 3:
(url заканчивается символом ')
$content_3='<a href=\'http://www.ya.ru/\' class=asa>ссылка</a>';

Вариант 4:
(url заканчивается пробелом)
$content_3='<a href=http://www.ya.ru class=asa>ссылка</a>';

Вариант 5:
(url заканчивается переносом строки)
$content_3='<a href=http://www.ya.ru
class=asa>ссылка</a>';


Вырезаю я таким способом :

PHP:
$content_3='Варианты ссылок (см. выше)';

preg_match_all("|http://(.*)[>^\"^\'^\s]|U", $content_3, $url,  PREG_PATTERN_ORDER);
 echo '$url[0][0] = '.$url[0][0].'<br>';
 echo '$url[1][0] = '.$url[1][0].'<br>';
Далее, я определяю, является ли ссылка внешней или нет....

Заранее спасибо

-~{}~ 01.07.07 21:14:

Вырезаю вот таким способом:
(не смог отредактировать)

preg_match_all("|http://(.*)[>^\"^\'^\s]|U", $content_3, $url, PREG_PATTERN_ORDER);
 

phprus

Moderator
Команда форума
sumdex
Эту задачу я бы решал в 3 этапа:

1) получаем все ссылки (параметры href тега а) в массив. Задача простая, решение есть в гугле и на этом форуме.

2) Зная url исследуемой страницы преобразуем url'ы из массива в абсолютные, включающие имя домена и полный путь. (http://forum.dklab.ru/php/advises/TransformationUrlInAbsolute.html http://forum.dklab.ru/php/heap/TransformationUrlInAbsolute.html)

3) проверять ссылки на принадлежность к твоему домену.
 

nalim

Новичок
Re: Определение количества внешних url, с учетом всех вариантов написания тега <a>

1.Корректно ли я написал регулярное выражение?
Выражение работает, но хотелось бы услышать мысли специалистов.
Судя по задаче - не вполне, так как требуются Url именно ссылок
а вырезаются все url.

например <script src="http://site.ru/script.php">
попадет в маску, а такие вещи явно не нужны.

хотя, если до этого все другие элементы убиваются- то корректно.


2.Возможно ли сразу вырезать внешние ссылки в одном регулярном выражении.
(пусть domen.ru - сайт у которого, нужно определить кол-во внешних ссылок)
возможно,
но эффективнее ИМХО будет сначала поубивать всё лишнее в документе простыми строковыми функциями.
 

sumdex

Новичок
nalim
у меня на вход поступают только теги <a ..>...</a>
уже из готового массива )))
 
Сверху