<? //Рассмотрим 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. Использование "жадных" квантификаторов |
Закрыть окно |