U (PCRE_UNGREEDY)
Этот модификатор инвертирует жадность квантификаторов, таким образом они по умолчанию не жадные.
***************************************
Эммм...Что-то не совсем понятно. Можно как-то проще объяснить.
1. Evgen8 - 24 Июня, 2012 - 19:41:48 - перейти к сообщению
2. Данил_123 - 24 Июня, 2012 - 20:51:43 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?php
- //Рассмотрим html-файл, где имеется
- //следующая строка:
- $str = "<div id=1>Привет</div> ".
- "<p>Текст, не заключенный в тег ".
- "div</p><div id=2>Пока</div>";
- // Если мы хотим найти текст,
- // содержащийся между тегами div,
- // естественно написать такой шаблон:
- $pattern = "!<div id=1>.*</div>!si";
- // Но этот шаблон слишком "жадный"
- // и захватит также и текст,
- // заключенный в нашем примере между
- // тегами <p>. Чтобы этого избежать,
- // нужно написать следующий шаблон,
- // отличающийся только наличием знака
- // вопроса, который запрещает
- // квантификатору быть "жадным".
- $pattern1 = "!<div id=1>.*?</div>!si";
- // Запускаем поиск в строке $str
- // совпадений с шаблонами
- // $pattern и $pattern1
- $s = preg_match_all ($pattern, $str,
- $res);
- $js = preg_match_all ($pattern1,
- $str, $res1);
- //выводим результаты поиска
- // функция htmlspecialchars позволяет
- // выводить html без
- // его обработки браузером
- echo "Жадный шаблон:".
- htmlspecialchars($res[0][0]).
- "<br>";
- echo "Нежадный шаблон:".
- htmlspecialchars($res1[0][0]);
- ?>
Цитата:
"Жадный" шаблон:<div id=1>Привет</div>
<p>Текст,не заключенный в тег div</p>
<div id=2>Пока</div>
"Нежадный" шаблон:<div id=1>Привет</div>
<p>Текст,не заключенный в тег div</p>
<div id=2>Пока</div>
"Нежадный" шаблон:<div id=1>Привет</div>
google..