Funkce PHP preg_replace_callback_array().
❮ Referenční příručka PHP RegExp
Příklad
Ukažte, kolik písmen nebo číslic se nachází v každém slově ve větě:
<?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;
?>
Definice a použití
Funkce preg_replace_callback_array()
vrací řetězec nebo pole řetězců, ve kterých jsou shody sady regulárních výrazů nahrazeny návratovou hodnotou funkce zpětného volání.
Poznámka: Pro každý řetězec funkce vyhodnocuje vzory v pořadí, v jakém jsou uvedeny. Výsledek vyhodnocení prvního vzoru na řetězci se použije jako vstupní řetězec pro druhý vzor a tak dále. To může vést k neočekávanému chování.
Syntax
preg_replace_callback_array(patterns, input, limit, count)
Hodnoty parametrů
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 |
Technické údaje
Návratová hodnota: | Vrátí řetězec nebo pole řetězců vyplývající z použití náhrad na vstupní řetězec nebo řetězce |
---|---|
Verze PHP: | 7+ |
Další příklady
Příklad
Tento příklad ilustruje potenciálně neočekávané účinky vzorů vyhodnocovaných v pořadí. Nejprve náhrada countLetters přidá „[4letter]“ ke „dnům“ a po provedení této náhrady najde náhrada countDigits „4“ ve „4letter“ a přidá k tomu „[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;
?>
❮ Referenční příručka PHP RegExp