Funkcja preg_replace_callback_array() PHP
Przykład
Pokaż, ile liter lub cyfr znajduje się w każdym słowie w zdaniu:
<?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;
?>
Definicja i użycie
Funkcja preg_replace_callback_array()
zwraca ciąg lub tablicę ciągów, w których dopasowania zestawu wyrażeń regularnych są zastępowane wartością zwracaną przez funkcję zwrotną.
Uwaga: Dla każdego ciągu funkcja ocenia wzorce w kolejności, w jakiej zostały podane. Wynik oceny pierwszego wzorca w ciągu jest używany jako ciąg wejściowy dla drugiego wzorca i tak dalej. Może to prowadzić do nieoczekiwanego zachowania.
Składnia
preg_replace_callback_array(patterns, input, limit, count)
Wartości parametrów
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 |
Szczegóły techniczne
Wartość zwrotu: | Zwraca ciąg lub tablicę ciągów powstałych w wyniku zastosowania zamienników do wejściowego ciągu lub ciągów |
---|---|
Wersja PHP: | 7+ |
Więcej przykładów
Przykład
Ten przykład ilustruje potencjalnie nieoczekiwane efekty wzorców ocenianych w kolejności. Po pierwsze, zastąpienie countLetters dodaje „[4litera]” do „dni”, a po wykonaniu tej zamiany zastąpienie countDigits znajduje „4” w „4litera” i dodaje do tego „[1cyfra]”:
<?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;
?>
❮ Dokumentacja RegExp PHP