Aktueller Standort: Startseite> Funktionskategorien> preg_replace_callback_array

preg_replace_callback_array

Führen Sie eine regelmäßige Ausdrucksuche durch und verwenden Sie einen Callback -Austausch
Name:preg_replace_callback_array
Kategorie:Regelmäßige Verarbeitung pcre
Programmiersprache:php
Kurzbeschreibung:Bei einem Array, das einen Ausdruck mit einer Rückruffunktion assoziiert, gibt eine Zeichenfolge zurück, in der alle Übereinstimmungen jedes Ausdrucks durch das von der Rückruffunktion zurückgegebene Substring ersetzt werden.

Definition und Verwendung

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.

Beispiel

Beispiel 1

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

Beispiel 2

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