Die Funktion preg_replace_callback_array()
gibt eine Zeichenfolge oder ein Array von Zeichenfolgen zurück, bei denen ein Satz regulärer Ausdrucksübereinstimmungen durch den Rückgabewert der Rückruffunktion ersetzt wird.
Hinweis: Für jede Zeichenfolge bewertet die Funktion das Muster in der angegebenen Reihenfolge. Das Ergebnis der Bewertung des ersten Musters in der Zeichenfolge wird als Eingangszeichenfolge für das zweite Muster usw. verwendet. Dies kann zu unerwartetem Verhalten führen.
Zeigen Sie, wie viele Buchstaben oder Zahlen jedes Wort in einem Satz enthält:
<? Php Funktion countletters ( $ Matches ) { Return $ Matches [ 0 ] . '[' . Strlen ( $ Matches [ 0 ] ) . 'Brief]' ; } Funktion countDigits ( $ Matches ) { Return $ Matches [ 0 ] . '[' . Strlen ( $ Matches [ 0 ] ) . 'Digit]' ; } $ input = "Es gibt 365 Tage im Jahr." ; $ musters = [ '/\ b [az]+\ b/i' => 'countletters' , '/\ b [0-9]+\ b/' => 'countdigit' ' ] ; $ result = preg_replace_callback_array ( $ musters , $ input ) ; Echo $ Ergebnis ; ?>
Probieren Sie es selbst aus
Dieses Beispiel zeigt die potenziellen unerwarteten Effekte, die das Muster in der sequentiellen Bewertung haben kann. Zunächst fügt der Ersatz von Countletters "[4Letter] nach" Days "hinzu. Nach dem Ausführen des Ersatzes findet der Ersatz von Countdigits "4" in "4Letter" und fügt "[1Digit]" hinzu:
<? Php Funktion countletters ( $ Matches ) { Return $ Matches [ 0 ] . '[' . Strlen ( $ Matches [ 0 ] ) . 'Brief]' ; } Funktion countDigits ( $ Matches ) { Return $ Matches [ 0 ] . '[' . Strlen ( $ Matches [ 0 ] ) . 'Digit]' ; } $ input = "365 Tage" ; $ musters = [ '/[az]+/i' => 'countletters' , '/[0-9]+/' => 'countdigit' ' ] ; $ result = preg_replace_callback_array ( $ musters , $ input ) ; Echo $ Ergebnis ; ?>
Probieren Sie es selbst aus