[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выбор ссылки по регулярке
to0n1
Добрый день ! Все же не могу разобраться с регуляркой.. все делаю вроде верно но не работает

есть ссылка

<a href="то что мне нужно получить" title="города и курорты ТУТ НАЗВАНИЕ СТРАНЫ КОТОРОЕ МЕНЯЕТСЯ">Города и курорты</a>

делаю такой регуляркой

preg_match('#<a\s+href="(.*)"\s+title="города и курорты[^\"]*"[^>]*>Города и курорты</a>#Usi',$page[1],$link);


Что делаю не так обьясните пожалуйста!!

Вот ссылка на страницу для теста http://vernisag-tambov.ru/index.php?option...%B0%D0%B4%D1%8B

заранее всем спасибо !!



Спустя 5 минут, 10 секунд (28.08.2011 - 19:15) Winston написал(а):
Так ?
$str = '<a href="то что мне нужно получить" title="города и курорты ТУТ НАЗВАНИЕ СТРАНЫ КОТОРОЕ МЕНЯЕТСЯ">Города и курорты</a>';
preg_match("#<a[\s\w]+href=(\"|')(.*)\\1[^>]*>#isuU", $str, $link);
echo '<pre>'.htmlspecialchars(print_r($link, true)).'</pre>';

Спустя 6 минут, 44 секунды (28.08.2011 - 19:22) to0n1 написал(а):
на вот этой странице http://vernisag-tambov.ru/index.php?option...%B7%D0%B8%D1%8F находит

Array
(
[0] => <a href="mailto:agent@vernisag-tambov.ru">
[1] => "
[2] => mailto:agent@vernisag-tambov.ru
)


а должно найти из вот этого

<a href="/index.php?option=com_tonkosti&view=default&Itemid=17&tpath=%D0%93%D0%BE%D1%80%D0%BE%D0%B4%D0%B0_%D0%B8_%D0%BA%D1%83%D1%80%D0%BE%D1%80%D1%82%D1%8B_%D0%90%D0%B1%D1%85%D0%B0%D0%B7%D0%B8%D0%B8" title="Города и курорты Абхазии">Города и курорты</a>



вот это /index.php?option=com_tonkosti&amp;view=default&amp;Itemid=17&amp;tpath=%D0%93%D0%BE%D1%80%D0%BE%D0%B4%D0%B0_%D0%B8_%D0%BA%D1%83%D1%80%D0%BE%D1%80%D1%82%D1%8B_%D0%90%D0%B1%D1%85%D0%B0%D0%B7%D0%B8%D0%B8

Спустя 14 минут, 13 секунд (28.08.2011 - 19:36) brdm написал(а):
Может можно без регулярок. Регулярка это всегда напряг для сервера.
$str = '<a href="то что мне нужно получить" title="города и курорты ТУТ НАЗВАНИЕ СТРАНЫ КОТОРОЕ МЕНЯЕТСЯ">Города и курорты</a>';

1. Находим все, что после href
$temp1 = strstr($str, "href");
2. Находим все, что после title
$temp2 = strstr($str, "title");
3. Отнимаем от первого второе
$str = trim(str_replace($temp2,"",$temp1));

Дальше примерно то же только уже с кавычками

Спустя 8 минут, 40 секунд (28.08.2011 - 19:45) to0n1 написал(а):
УРАААА получилось вот такой вот регуляркой
preg_match_all('#• <a href="(.*)"[^>]*title="[^>]*">Города и курорты</a>#', $cont[1], $link);


Всем спасибо !! Winston извини за надоедания !!!

Спустя 6 минут, 53 секунды (28.08.2011 - 19:51) Winston написал(а):
А почему бы не упростить ее ?
preg_match_all('#<a\s*href="(.*)"[^>]*>Города и курорты</a>#isuU', $cont[1], $link);

Спустя 31 минута, 49 секунд (28.08.2011 - 20:23) to0n1 написал(а):
В том то и дело что если упрощаю какаято хрень начинает лезть пол страницы контента попадает под регулярку .... Я сам в шоке почему и обратился к Вам !!!

помогло если Вы не заметили не усложнение проверок на закрытие тега а проверка на спецсимволы перед ссылкой (форум их обрезает)

'#<a\s*href="(.*)"[^>]*>Города и курорты</a>#isuU', $cont[1], $link



UPD Вообщем обрезает их форум может так
'#<a\s*href="(.*)"[^>]*>Города и курорты</a>#isuU', $cont[1], $link


UPD неа :( вобщем там перед ссылкой bull и nbsp вот я их и задействовал ! И все нормально теперь !
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.