Вопрос по регулярным выражениям

s)))

Новичок
Вопрос по регулярным выражениям

Привет, я новичок на этом форуме, надеюсь в нужный раздел и с нужным названием создал тему)))

Ищу на странице текст по шаблону

<a[^>]+href=\"([^\"]+)\"[^>]+>(.+)<\/a>

Как изменить выражение (.+), чтобы оно учитывало также ссылки с переносом строки?

<a class="link" href="http://www.site.ru"> text
text
text
</a>


Как вообще учесть все возможные символы включая пробелы?
Вот есть к примеру у меня хтмл

<div> <b>текст</b>
текст текст <span>текст</span>
текст
</div>

Как найти текст между дивами, если учесть, что в нем может быть все что угодно, включая теги и знаки переноса строки?

Если бы не было переноса строки.. можно было бы просто..
$pattern="/<div>(.+)<\/div>/";
 

s)))

Новичок
спасибо, прочитал.. поставил модификатор s.. но теперь проблема в том, что у меня на выходе теперь вообще текст всей страницы, а не нужного выражения
 

Oldwin

Новичок
Автор оригинала: s)))
спасибо, прочитал.. поставил модификатор s.. но теперь проблема в том, что у меня на выходе теперь вообще текст всей страницы, а не нужного выражения
Где именно? В preg_match в нулевом элементе массива?))
У тебя регулярное выражение с ошибкой.
<a[^>]+href=\"([^\"]+)\"[^>]+>(.+)<\/a>
Получается что после кавычки обязательно должно что-то идти:
<a class="link" href="http://www.site.ru"_>
P.S. preg_match_all
 

s)))

Новичок
угу.. в нулевом.. сейчас все покажу) я использую preg_match_all

...
<a style="... " href="url" onclick="..." > Здесь <i>любой</i> <b>текст</b> с тэгами и переносами на

дргугую
строку
</a>
...

$pattern = "/<a[^>]+href=\"([^\"]+)\"[^>]+>(.+)<\/a>/s";
 

s)))

Новичок
Просто у меня еще много всяких тэгов на странице.. видимо есть где-то пересечения еще...

Я почитал что-то в мануале про "жадность" ...

(.+) вот эта конструкция вроде как жадная и пытается забрать по максимуму..

я заменил её на (.*?)


И теперь при использовании модификатора все работает нормально!
Спасибо)
 
Сверху