Одним из преимуществ PCRE или POSIX является поддержка некоторых специальных конструкций. Например, обычно регулярные выражения сопоставляются "жадно". Возьмем, например, следующее регулярное выражение:
Попытаемся сопоставить его со следующей строкой: Код <p>Sex, drugs and <b>PHP</b>.</p> Что получится? Вся строка. Разумеется, <p> так-же подходит под заданный шаблон, но регулярные выражения пытаются найти максимально большое соответствие. Следовательно, обычно требуются такие неуклюжие конструкции, как <[^>]*>. Впрочем, существует и более легкий путь. Чтобы активизировать "не жадное" сопоставление, после оператора * можно использовать модификатор ?. Код <?php $string = '<p>Sex, drugs and <b>PHP</b>.</p>'; preg_match_all('/<.*?>/', $string, $matches); foreach ($matches[0] as $match) { echo htmlspecialchars("$match "); } ?> Приведенный код даст следующий результат: |