PHP - Funktion preg_replace_callback_array()
Beispiel
Zeigen Sie, wie viele Buchstaben oder Ziffern in jedem Wort eines Satzes vorkommen:
<?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;
?>
Definition und Verwendung
Die preg_replace_callback_array()
Funktion gibt einen String oder ein Array von Strings zurück, in dem Übereinstimmungen einer Reihe regulärer Ausdrücke durch den Rückgabewert einer Callback-Funktion ersetzt werden.
Hinweis: Für jede Zeichenfolge wertet die Funktion die Muster in der angegebenen Reihenfolge aus. Das Ergebnis der Auswertung des ersten Musters in der Zeichenfolge wird als Eingabezeichenfolge für das zweite Muster verwendet und so weiter. Dies kann zu unerwartetem Verhalten führen.
Syntax
preg_replace_callback_array(patterns, input, limit, count)
Parameterwerte
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 |
Technische Details
Rückgabewert: | Gibt eine Zeichenfolge oder ein Array von Zeichenfolgen zurück, die sich aus der Anwendung der Ersetzungen auf die Eingabezeichenfolge oder -zeichenfolgen ergeben |
---|---|
PHP-Version: | 7+ |
Mehr Beispiele
Beispiel
Dieses Beispiel veranschaulicht die möglicherweise unerwarteten Auswirkungen der nacheinander ausgewerteten Muster. Zuerst fügt die countLetters-Ersetzung "[4letter]" zu "days" hinzu, und nachdem diese Ersetzung durchgeführt wurde, findet die countDigits-Ersetzung die "4" in "4letter" und fügt "[1digit]" hinzu:
<?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-RegExp-Referenz