preg_match_all(PHP 3>= 3.0.9, PHP 4) preg_match_all - выполняет глобальный поиск совпадения регулярного выражения. Описаниеint preg_match_all (string pattern, string subject, array matches [, int flags]) Ищет в subject все совпадения с регулярным выражением pattern и помещает их в matches в порядке, специфицированном в order. После нахождения первого совпадения последующий поиск продолжается до нахождения последнего совпадения. flags может быть комбинацией следующих флагов (обратите внимание, что нет смысла использовать PREG_PATTERN_ORDER вместе с PREG_SET_ORDER):
Если никакой флаг упорядочивания не задан, принимается PREG_PATTERN_ORDER. Возвращает количество полных совпадений с патэрном (это может быть нуль), или FALSE при ошибке.
Этот пример выдаст:
См. также preg_match(), preg_replace() и preg_split(). |
||||||||||
|
||||||||||
Эти отличия даны относительно Perl 5.005.
По умолчанию пробельным символом считается любой таковой символ, распознаваемый функцией isspace() библиотеки С, хотя возможна компиляция PCRE с альтернативной таблицей типов символов. Нормально isspace() распознаёт space, formfeed, newline, carriage return, horizontal tab и vertical tab. Perl 5 больше не включает vertical tab в набор пробельных символов. Мнемоника \v, которая долгое время была в документации Perl, фактически никогда не распознавалась. Однако сам по себе этот символ рассматривался как пробельный как минимум до версии 5.002. В 5.004 и 5.005 он не соответствует \s.
PCRE не разрешает повторение квантификаторов или опережающих утверждений/lookahead assertions. Perl разрешает их, но они имеют другое значение. Например, (?!a){3} не утверждает, что три последующие символа не "a". Оно просто утверждает три раза, что следующий символ не "a".
Захваты субпатэрнов, которые возникают внутри отрицательного опережающего утверждения, вычисляются, но их вхождения в векторе смещения никогда не устанавливаются. Perl устанавливает свои числовые переменные из любого такого патэрна, который совпадает до неудачи утверждения при совпадении с чем-либо (продолжая таким образом), но только если негативное опережающее утверждение содержит одну ветвь.
Хотя двоичные нулевые символы поддерживаются в строке-субъекте, они не допускаются в строке патэрна, поскольку он передаётся как нормальная C-строка, оканчивающаяся нулём. Замена "\\x00" может использоваться в патэрне для представления бинарного нуля.
| |