Функции Язык программирования PHP

preg_grep

(PHP 4)

preg_grep - возвращает массив вхождений, совпадающих с патэрном.

Описание

array preg_grep (string pattern, array input)

preg_grep() возвращает массив, состоящий из элементов массива input, совпавших с данным pattern.

Начиная с PHP 4.0.4, возвращаемые функцией preg_grep() результаты индексируются с использованием ключей input-массива. Если такое поведение нежелательно, используйте array_values() с массивом, возвращённым функцией preg_grep(), для реиндексации значений.

Пример 1. preg_grep()
// 
возвращает все элементы массива, // содержащие числа с плавающей точкой $fl_array 
= preg_grep ("/^(\d+)?\.\d+$/", $array);

Назад Оглавление Вперёд
Синтаксис патэрна Вверх preg_match_all

Синтаксис Патэрна

Отличия от Perl

Эти отличия даны относительно Perl 5.005.

  1. По умолчанию пробельным символом считается любой таковой символ, распознаваемый функцией 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.

  2. PCRE не разрешает повторение квантификаторов или опережающих утверждений/lookahead assertions. Perl разрешает их, но они имеют другое значение. Например, (?!a){3} не утверждает, что три последующие символа не "a". Оно просто утверждает три раза, что следующий символ не "a".

  3. Захваты субпатэрнов, которые возникают внутри отрицательного опережающего утверждения, вычисляются, но их вхождения в векторе смещения никогда не устанавливаются. Perl устанавливает свои числовые переменные из любого такого патэрна, который совпадает до неудачи утверждения при совпадении с чем-либо (продолжая таким образом), но только если негативное опережающее утверждение содержит одну ветвь.

  4. Хотя двоичные нулевые символы поддерживаются в строке-субъекте, они не допускаются в строке патэрна, поскольку он передаётся как нормальная C-строка, оканчивающаяся нулём. Замена "\\x00" может использоваться в патэрне для представления бинарного нуля.