preg_replace_callback
(PHP 4 >= 4.0.5, PHP 5, PHP 7)
preg_replace_callback — Sucht und ersetzt mit regulären Ausdrücken unter Verwendung eines Callbacks
Beschreibung
$pattern
, callable $callback
, mixed $subject
[, int $limit
= -1
[, int &$count
]] ) : mixed
Abgesehen von der Tatsache, dass statt des Parameters
replacement
ein callback
angegeben werden soll, ist das Verhalten dieser Funktion identisch zu
preg_replace().
Parameter-Liste
-
pattern
-
Der Ausdruck, nach dem gesucht werden soll. Es kann entweder eine Zeichenkette oder ein Array mit Zeichenketten sein.
-
callback
-
Ein Callback, dem ein Array von Übereinstimmungen mit
subject
übergeben wird. Der Callback sollte die Ersetzungs-Zeichenkette liefern. Das ist die Callback-Signatur:handler ( array$matches
) : stringHäufig werden Sie die
callback
-Funktion für preg_replace_callback() nur an einer Stelle benötigen. In diesem Fall können Sie eine Anonyme Funktion verwenden, um innerhalb des Aufrufs von preg_replace_callback() den Callback zu deklarieren. Auf diese Weise haben Sie alle Informationen für den Aufruf an einer Stelle und stopfen den Namensraum für Funktionen nicht mit Namen für Callback-Funktionen voll, die sonst nirgends verwendet werden.Beispiel #1 preg_replace_callback() und Anonyme Funktion
<?php
// ein Kommandozeilen-Filter im Unix-Stil zum Umwandeln von Groß- in
// Kleinschreibung am Beginn eines Abschnitts
$fp = fopen("php://stdin", "r") or die("kann stdin nicht lesen");
while (!feof($fp)) {
$zeile = fgets($fp);
$zeile = preg_replace_callback(
'|<p>\s*\w|',
function ($treffer) {
return strtolower($treffer[0]);
},
$zeile
);
echo $zeile;
}
fclose($fp);
?> -
subject
-
Die Zeichenkette oder ein Array mit Zeichenketten zum Suchen und Ersetzen.
-
limit
-
Die Höchstzahl der Ersetzungen für jedes Suchmuster in jeder
subject
. Standardmäßig -1 (unbegrenzt). -
count
-
Falls angegeben, wird dieser Variable die Anzahl vorgenommener Ersetzungen zugewiesen.
Rückgabewerte
Falls subject
ein Array ist, gibt
preg_replace_callback() ein Array zurück und andernfalls
eine Zeichenkette. Bei einem Fehler ist der Rückgabewert NULL
.
Falls Übereinstimmungen gefunden werden, wird die neue Zeichenkette
zurückgegeben und andernfalls die unveränderte Zeichenkette
subject
Beispiele
Beispiel #2 preg_replace_callback() Beispiel
<?php
// dieser Text wurde 2002 verwendet
// wir wollen ihn für 2003 aktualisieren
$text = "Aprilscherze gibts am 01.04.2002\n";
$text.= "Das letzte Weihnachten war am 24.12.2001\n";
// die Callback-Funktion
function naechstes_jahr($treffer)
{
// wie üblich: $treffer[0] ist die Übereinstimmung mit dem
// kompletten Suchmuster, $treffer[1] die Übereinstimmung mit
// dem ersten eingeklammerten Teilsuchmuster und so weiter
return $treffer[1].($treffer[2]+1);
}
echo preg_replace_callback(
"|(\d{2}\.\d{2}\.)(\d{4})|",
"naechstes_jahr",
$text);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Aprilscherze gibts am 01.04.2003 Das letzte Weihnachten war am 24.12.2002
Beispiel #3 preg_replace_callback() unter Verwendung einer rekursiven Struktur um gekapselten BB-Code zu verarbeiten
<?php
$eingabe = "plain [indent] deep [indent] deeper [/indent] deep [/indent] plain";
function parseTagsRecursive($eingabe)
{
$regex = '#\[indent]((?:[^[]|\[(?!/?indent])|(?R))+)\[/indent]#';
if (is_array($eingabe)) {
$eingabe = '<div style="margin-left: 10px">'.$eingabe[1].'</div>';
}
return preg_replace_callback($regex, 'parseTagsRecursive', $eingabe);
}
$ausgabe = parseTagsRecursive($eingabe);
echo $ausgabe;
?>
Siehe auch
- PCRE-Suchmuster
- preg_replace_callback_array() - Perform a regular expression search and replace using callbacks
- preg_quote() - Maskiert Zeichen regulärer Ausdrücke
- preg_replace() - Sucht und ersetzt mit regulären Ausdrücken
- preg_last_error() - Liefert den Fehlercode der letzten PCRE RegEx-Auswertung
- Anonymous functions
- Informationen über den Callback-Typ
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-function.preg-replace-callback.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.