Выполняет поиск и замену по регулярному выражению с использованием функций обратного вызова

# preg_replace_callback_array

(PHP 7, PHP 8)

preg_replace_callback_array — Выполняет поиск и замену по регулярному выражению с использованием функций обратного вызова

### Описание

function preg_replace_callback_array(
array `$pattern`,
string|array `$subject`,
int `$limit` = -1,
int `&$count` = `null`,
int `$flags` = 0
): string|array|null

Поведение этой функции похоже на preg_replace_callback(), за исключением того, что для каждого шаблона используется своя функция обратного вызова.

### Список параметров

`pattern`

  Ассоциативный массив, связывающий шаблоны регулярного выражения (ключи) и callable (значения).

`subject`

  Строка, в которой будет производиться поиск и замена.

`limit`

  Максимальное количество замен для каждого шаблона в строке `subject`. По умолчанию `-1` (без ограничений).

`count`

  Если задан, то в указанную переменную будет записано количество произведённых замен.

`flags`

  `flags` может быть комбинацией флагов `PREG_OFFSET_CAPTURE` и `PREG_UNMATCHED_AS_NULL`, которые влияют на формат массива совпадений. Смотрите описание в preg_match() для более подробной информации.

### Возвращаемые значения

preg_replace_callback_array() возвращает массив, если параметр `subject` является массивом и строку, если строкой. В случае возникновения ошибки возвращается `null`

Если совпадения найдены, будет возвращена новая строка, а если нет, то исходная `subject`.

### Ошибки

Если передали шаблон регулярного выражения, который не компилируется в допустимое регулярное выражение, выдаётся ошибка уровня `E_WARNING`.

### Список изменений

Версия | Описание
--- | ---
7.4.0 | Добавлен параметр `flags`.

### Примеры

Пример #1 Пример использования preg_replace_callback_array()

    <?php
    $subject = 'Aaaaaa Bbb';

    preg_replace_callback_array(
        [
            '~[a]+~i' => function ($match) {
                echo 'Найдено ', strlen($match[0]), ' совпадений "a"', PHP_EOL;
            },
            '~[b]+~i' => function ($match) {
                echo 'Найдено ', strlen($match[0]), ' совпадений "b"', PHP_EOL;
            }
        ],
        $subject
    );
    ?>

Результат выполнения приведённого примера:

    Найдено 6 совпадений "a"
    Найдено 3 совпадений "b"

### Смотрите также

- Шаблоны PCRE
- preg_replace_callback() - Выполняет поиск по регулярному выражению и заменяет совпадения callback-функцией
- preg_quote() - Экранирует символы в регулярных выражениях
- preg_replace() - Выполняет поиск и замену по регулярному выражению
- preg_last_error() - Возвращает код ошибки выполнения последнего регулярного выражения PCRE
- Анонимные функции

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open