[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: регулярки для собирания ссылок
Страницы: 1, 2
dimonise
всем привет. бьюсь над такой вот задачей - нужно из текста собрать все ссылки, не удалить а именно собрать в массив. в регулярках не силен, все что ни пробую не работает как нужно... обидно блин, вот пробовал вот так:


$text = 'Вася Пупкин <a href="http://mail.ru">пьет</a> молоко и <a href="http://mail.ru">ест</a> селедку';

preg_match_all("/^\<a href=\"*\"\>*\<\/a\>/",$text,$matches);


не получается
inpost
А регулярка тут для чего? У тебя синтаксическая ошибка, ты не умеешь строку записать laugh.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
dimonise
строка у меня не такая! блин у меня вообще реально нет кавычек, это просто пример текста в спешке
inpost
Что делает символ "^" в начале регулярки?

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
dimonise
"крышка" - символ начала строки как в книжках написано - я сразу сказал что с регулярками туго...
inpost
Ну крышка крышкой. А что делает? Вот ты его поставил, значит что конкретно ты хочешь добиться используя этот символ?
Давай разберём эту часть: "^\<a" - что значит это начало регулярки smile.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
dimonise
а фиг его знает :) нашел сейчас конструктор регулярок с подсветкой найденных соответствий поигрался немного добился чтобы выбирало сам тег <а и слеши, дальше пока застрял


/([<a])*([">])*([\</a>])/
dimonise
вот пробую так -

([<a href="http://])*([">])*([\</a>])


лучше, но все равно не то
inpost
Не знаешь, ну так почитай книжку же smile.gif
Разберись сначала со знаком ^ , и так далее.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
dimonise
книжку читаю и не понимаю... ну вот возьмем по простому значек * означает любые символы, хорошо, пишу
/[<a href="http://]*[">]*[</a>]/
в итоге выбирает пробел который перед тегом, пичем иногда куском захватывая слово, внутри href выбирает только буквы а, вопрос - почему? если я поставил звездочку? слова ссылки тоже не берет
inpost
Фигурные скобки - диапазон символов, в диапазоне у тебя пробелы.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
dimonise
вот сейчас добился такого -
/[<a]\s([href="http://]).+[">].+[</a>]/
только теперь выбирает все что между первым а и последним закрытым а
dimonise
сделал!

<a [^<>]*href=[\'"]([^\'"]+)[\'"][^<>]*>.+?<\/a>
Skesh
Велосипед:
$text="бла бла бла <a href> link  </a> бла бла ";
$parts = explode("<a", $text);
for($i=0; $i<count($parts); $i++) {
$link[$i]="<a".explode("</a>", $parts[$i])."</a>";
}

не проверял, но по идее должно работать, все ссылки будут в массиве $link

_____________
*пускает слюну, глядя на код* :)
dimonise
мы не ищем легких путей user posted image
Быстрый ответ:

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