Найти ссылку на странице

Статус
В этой теме нельзя размещать новые ответы.

Stripe

Участник
Регистрация
20 Окт 2007
Сообщения
164
Реакции
9
Есть страница с несколькими ссылками, как составить регулярку, которая определит есть или нет на странице именно моя ссылка?
 
PHP:
preg_match('/<a.*?href=.*?>.*?<\/a>/is',$body);
Если именно твоя, то:
PHP:
preg_match('/<a.*?href="http:\/\/твой_домен.ru\/">.*?<\/a>/is',$body);
 
Тут регулярные выражения не так уж и нужны, вполне можно обойтись функцией strstr($html, $link).
 
Это в случае если ссылка статическая ...
А если ссылка и динамическая, то Вы все равно разбираете html код.
Можно и так попробывать без регулярок:
Код:
$num = substr_count(Где_ищем, что_ищем);
if ( $num > 0 ) {
  echo "Ссылка встречается: ".$num." раз!";
} else {
  echo "Ссылки на странице НЕТ!";
}
 
Некоторые сайты добавляют перед вашей ссылкой свою типа
href="http://qwerty.ком/рандом?site=http://jagajaga.ком/рандом число"
и таких ссылок много.
То тут проще будет через регулярку.
А вообще мне всё проще через регулярку =)
 
немного дополню Nevep
PHP:
preg_match('/<a(.*?)href="http:\/\/твой_домен.ru(.*?)">(.*?)<\/a>/is',$body);
Может я что не так делаю, но у меня почему то кончтрукция .*? без скобок не работает :)
 
немного дополню Nevep
PHP:
preg_match('/<a(.*?)href="http:\/\/твой_домен.ru(.*?)">(.*?)<\/a>/is',$body);
Может я что не так делаю, но у меня почему то кончтрукция .*? без скобок не работает :)


лучше стараться заменять "точку" на более применимый символ. например в тексте выше
HTML:
<a(.*?)
можно смело заменить на
HTML:
<a[^>]+

знак ? будет уже не нужен, ибо скобка в любом случае должна закрывать тег
 
Я бы лучше сделал так:
Код:
preg_match('/href=(\'|")http:\/\/твой_домен.ru(.*?)(\'|")/U', $body, $finded);
т.к. некоторые "умные" верстальщики ставят ссылку в href='' , или программеры при выводе использую ' вместо "
 
http:\/\/домен[^'"\s>]+ -выдаст все урлы на ваш сайт со страницы
http:\/\/домен[^'"\s>]+[^<>]*> - выдаст все урлы на ваш сайт которые внутри тегов (обычно это <a>)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху