<?
//Рассмотрим 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]);
?>

Пример 13.3. Использование "жадных" квантификаторов
Закрыть окно