PHP preg_replace_callback_array() Functie
Voorbeeld
Laat zien hoeveel letters of cijfers er in elk woord in een zin voorkomen:
<?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;
?>
Definitie en gebruik
De preg_replace_callback_array()
functie retourneert een tekenreeks of een reeks tekenreeksen waarin overeenkomsten van een set reguliere expressies worden vervangen door de geretourneerde waarde van een callback-functie.
Opmerking: voor elke string evalueert de functie de patronen in de volgorde waarin ze zijn gegeven. Het resultaat van het evalueren van het eerste patroon op de tekenreeks wordt gebruikt als invoertekenreeks voor het tweede patroon, enzovoort. Dit kan leiden tot onverwacht gedrag.
Syntaxis
preg_replace_callback_array(patterns, input, limit, count)
Parameterwaarden
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
Winstwaarde: | Retourneert een tekenreeks of een reeks tekenreeksen die het resultaat zijn van het toepassen van de vervangingen op de invoertekenreeks of tekenreeksen |
---|---|
PHP-versie: | 7+ |
Meer voorbeelden
Voorbeeld
Dit voorbeeld illustreert de mogelijk onverwachte effecten van de patronen die in volgorde worden geëvalueerd. Ten eerste voegt de countLetters-vervanging "[4letter]" toe aan "dagen" en, nadat die vervanging is uitgevoerd, vindt de countDigits-vervanging de "4" in "4letter" en voegt daar "[1digit]" aan toe:
<?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-referentie