ProfiPHPProfiPHP
Категория: Функции для работы с регулярными выражениями (Perl-совместимые)

Функция Preg_match_all

Функция Preg_match_all выполняет глобальный поиск шаблона в строке.
int preg_match_all( string $pattern, string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )
Функция Preg_match_all ищет в строке Subject все совпадения с шаблоном Pattern и помещает результат в массив Matches в порядке, определяемом комбинацией флагов Flags.

После нахождения первого соответствия последующие поиски будут осуществляться не с начала строки, а от конца последнего найденного вхождения.

Параметр Pattern являет собой искомый шаблон, строку.

В параметре Subject указывается входная строка.

Параметр Matches являет собой массив совпавших значений, отсортированный в соответствии с параметром Flags.

Параметр Flags может быть комбинацией следующих флагов:

- PREG_PATTERN_ORDER (по умолчанию) - упорядочивает результаты так, что элемент $matches[0] содержит массив полных вхождений шаблона, элемент $matches[1] содержит массив вхождений первой подмаски, и так далее.

Если шаблон содержит именованные подшаблоны, $matches дополнительно будет содержать записи для ключей с именами этих подшаблонов.

- PREG_SET_ORDER - упорядочивает результаты так, что элемент $matches[0] содержит первый набор вхождений, элемент $matches[1] содержит второй набор вхождений, и так далее.

- PREG_OFFSET_CAPTURE - для каждой найденной подстроки будет указана ее позиция в исходной строке. Необходимо помнить, что этот флаг меняет формат возвращаемого массива Matches в массив, каждый элемент которого содержит массив, содержащий в индексе с номером 0 найденную подстроку, а смещение этой подстроки в параметре Subject - в индексе 1.

Дополнительный параметр Offset может быть использован для указания альтернативной начальной позиции для поиска.

Функция Preg_match_all возвращает количество найденных вхождений шаблона (которое может быть и нулем) либо FALSE, если во время выполнения возникли какие-либо ошибки.

Пример использования функции Preg_match_all:
$content = 'Подсчитаем [bold]количество[/bold] найденных [bold]тегов[/bold], которые отображают текст [bold]жирным[/bold].';
preg_match_all( "/\[bold\](.*?)\[\/bold\]/is", $content, $matches, PREG_SET_ORDER );
print_r( $matches );
Результат выполнения данного примера:
Array
(
[0] => Array
(
[0] => [bold]количество[/bold]
[1] => количество
)

[1] => Array
(
[0] => [bold]тегов[/bold]
[1] => тегов
)

[2] => Array
(
[0] => [bold]жирным[/bold]
[1] => жирным
)
)

Добавить комментарий

Имя:
Текст комментария: