Forum Webscript.Ru

Программирование => Регулярные выражения => Тема начата: Sileri от 14 Апреля 2004, 16:09:07

Название: Помогите построить регулярное выражение
Отправлено: Sileri от 14 Апреля 2004, 16:09:07
Не могу понять как нужно писать регулярные выражения в PHP.
Мне нужно определить текст между тэгами заголовка

и

и вставить в документ.
Название: Текст между тегами заголовка <h1> и </h1>
Отправлено: hanslinger от 14 Апреля 2004, 16:21:50
preg_match();
Название: Текст между тегами заголовка <h1> и </h1>
Отправлено: Меняздесьдавнонет от 14 Апреля 2004, 17:39:34
такую задачу можно решить и без регулярных - найти позицию первого тега, второго ,и вырезать все, что между ними
Название: Текст между тегами заголовка <h1> и </h1>
Отправлено: Sileri от 15 Апреля 2004, 09:26:29
Я просто хотела на простом примере понять как работает функция preg_match();
Название: Текст между тегами заголовка <h1> и </h1>
Отправлено: Yukko от 15 Апреля 2004, 09:58:56
Цитировать
Sileri:
Я просто хотела на простом примере понять

тебе сюда:
http://detail.phpclub.net/article/regexp_1
http://detail.phpclub.net/article/regexp_2
Название: Текст между тегами заголовка <h1> и </h1>
Отправлено: Sileri от 15 Апреля 2004, 14:36:25
Спасибо, я прочитала обе статьи.
Кое-что поняла

почему не работает следующая конструкция:

preg_match_all("/(?<=

).*(?=<\\/h1>)/", $file, $matches);
Выдает пустой массив

Название: Текст между тегами заголовка <h1> и </h1>
Отправлено: AliMamed от 15 Апреля 2004, 14:42:27
переезжаем в профильный форум
Название: Текст между тегами заголовка <h1> и </h1>
Отправлено: Yukko от 16 Апреля 2004, 15:23:43
Цитировать
Sileri:
Выдает пустой массив

Вся фишка тут в квантификаторе:
* подразумевает, что не требуется ни один символ, может совпасть сколько угодно символов. Механизм останавливается прямо на первом условии и не требует ни одного символа! Поставь ему вместо * плюсик + и все заработает!



preg_match_all("/(?<=

\\).+(?=<\\\\/h1>\\)/", $file, $matches);
?>


Механизм совпадения увидит плюсик (должен совпасть минимум один символ), и начинает искать минимум один, а потом он становится жадным и ищет все символы.