Функция PHP preg_replace_callback_array()
❮ Справочник по регулярному выражению PHP
Пример
Покажите, сколько букв или цифр встречается в каждом слове предложения:
<?php
function countLetters($matches) {
return $matches[0] . '[' .
strlen($matches[0]) . 'letter]';
}
function countDigits($matches) {
return $matches[0] . '[' . strlen($matches[0]) . 'digit]';
}
$input
= "There are 365 days in a year.";
$patterns = [
'/\b[a-z]+\b/i' =>
'countLetters',
'/\b[0-9]+\b/' => 'countDigits'
];
$result =
preg_replace_callback_array($patterns, $input);
echo $result;
?>
Определение и использование
Функция preg_replace_callback_array()
возвращает строку или массив строк, в которых совпадения набора регулярных выражений заменяются возвращаемым значением функции обратного вызова.
Примечание. Для каждой строки функция оценивает шаблоны в том порядке, в котором они заданы. Результат вычисления первого шаблона в строке используется в качестве входной строки для второго шаблона и так далее. Это может привести к неожиданному поведению.
Синтаксис
preg_replace_callback_array(patterns, input, limit, count)
Значения параметров
Parameter | Description |
---|---|
pattern | Required. An associative array which associates regular
expression patterns to callback functions. The callback functions have one parameter which is an array of matches.The first element in the array contains the match for the whole expression while the remaining elements have matches for each of the groups in the expression. |
input | Required. The string or array of strings in which replacements are being performed |
limit | Optional. Defaults to -1, meaning unlimited. Sets a limit to how many replacements can be done in each string |
count | Optional. After the function has executed, this variable will contain a number indicating how many replacements were performed |
Технические детали
Возвращаемое значение: | Возвращает строку или массив строк, полученных в результате применения замен к входной строке или строкам. |
---|---|
Версия PHP: | 7+ |
Дополнительные примеры
Пример
Этот пример иллюстрирует потенциально неожиданные эффекты последовательной оценки шаблонов. Во-первых, замена countLetters добавляет «[4letter]» к «days», а после того, как эта замена была выполнена, замена countDigits находит «4» в «4letter» и добавляет к этому «[1digit]»:
<?php
function countLetters($matches) {
return $matches[0] . '[' .
strlen($matches[0]) . 'letter]';
}
function countDigits($matches) {
return $matches[0] . '[' . strlen($matches[0]) . 'digit]';
}
$input
= "365 days";
$patterns = [
'/[a-z]+/i' => 'countLetters',
'/[0-9]+/' => 'countDigits'
];
$result =
preg_replace_callback_array($patterns, $input);
echo $result;
?>
❮ Справочник по регулярному выражению PHP