(PHP 7, PHP 8)
preg_replace_callback_array — Выполняет поиск и замену по регулярному выражению с использованием функций обратного вызова
$pattern
,$subject
,$limit
= -1,&$count
= null
,$flags
= 0Поведение этой функции похоже на 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"