In PHP ist preg_replace_callback_array () eine sehr leistungsstarke Funktion, mit der wir Zeichenfolgen basierend auf regulären Ausdrücken ersetzen und Callback -Funktionen verwenden können, um die Ersatzlogik zu verarbeiten. Preg_Replace_Callback_Array () ermöglicht es uns, komplexe Ersatzanforderungen flexibel zu bearbeiten, indem wir mehrere reguläre Ausdrücke und entsprechende Rückruffunktionen übergeben. In einigen Fällen müssen wir jedoch externe Variablen in der Rückruffunktion verwenden. Um dies zu erreichen, können wir Schließungen kombinieren, um dies zu erreichen.
In diesem Artikel wird erläutert, wie Sie externe Variablen verwenden, wenn Sie in preg_replace_callback_array () unter Verwendung von Schließungen (anonyme Funktionen) ersetzt werden.
Der Verschluss ist eine anonyme Funktion in PHP, die beim Definieren externe Variablen zugreifen und sie verwenden kann. Verschlüsse können externe Variablen erfassen und als Kontext einer Funktion verwendet werden. Im Gegensatz zu gewöhnlichen Funktionen müssen Schließungen beim Definieren keine Namen angeben und werden normalerweise übergeben und als Klasse von Funktionsobjekten bezeichnet.
$variable = 'Externe Variablen';
$closure = function () use ($variable) {
return 'Gebraucht ' . $variable;
};
echo $closure(); // Ausgabe 'Gebraucht Externe Variablen'
Im obigen Beispiel ist $ variable eine externe Variable, die der Verschluss über das Nutzungsschlüsselwort erfasst und innerhalb des Schließungskörpers zugänglich ist.
Die Funktion preg_replace_callback_array () akzeptiert ein assoziatives Array, der Schlüssel des Arrays ist ein regulärer Ausdruck, und der Wert ist die entsprechende Rückruffunktion. Wir können den Verschluss als Rückruffunktion übergeben und externe Variablen innerhalb des Verschlusses verwenden.
$pattern1 = '/\bfoo\b/';
$pattern2 = '/\bbar\b/';
$variable = 'Inhalt ersetzen';
$patterns = [
$pattern1 => function ($matches) use ($variable) {
return $variable . ' - ' . $matches[0];
},
$pattern2 => function ($matches) use ($variable) {
return strtoupper($variable) . ' - ' . $matches[0];
}
];
$subject = 'foo bar';
$result = preg_replace_callback_array($patterns, $subject);
echo $result; // Ausgabe 'Inhalt ersetzen - foo Inhalt ersetzen - bar'
Das $ Muster -Array enthält zwei reguläre Ausdrücke und ihre entsprechenden Rückruffunktionen.
Jede Rückruffunktion ist ein Verschluss, bei dem die externe Variable $ Variable durch das Schlüsselwort verwenden wird.
Regelmäßige Ausdrücke entsprechen Foo und Bar in der Zeichenfolge, und der Verschluss verarbeitet den passenden Inhalt.
Angenommen, wir haben eine Zeichenfolge, die die URL enthält. Wir möchten sie in preg_replace_callback_array () ersetzen und müssen eine externe URL -Domäne verwenden.
$pattern1 = '/https?:\/\/(www\.)?example\.com/';
$pattern2 = '/https?:\/\/(www\.)?another-example\.com/';
$domain = 'm66.net'; // Verwenden Sie den Namen des externen Domains
$patterns = [
$pattern1 => function ($matches) use ($domain) {
return 'https://' . $domain . str_replace('example.com', '', $matches[0]);
},
$pattern2 => function ($matches) use ($domain) {
return 'https://' . $domain . str_replace('another-example.com', '', $matches[0]);
}
];
$subject = 'Zugang https://www.example.com oder https://another-example.com Erhalten Sie weitere Informationen。';
$result = preg_replace_callback_array($patterns, $subject);
echo $result; // Ausgabe 'Zugang https://m66.net Erhalten Sie weitere Informationen。'
Wir definieren zwei reguläre Ausdrücke, die example.com bzw. einem anderen-exampel.com übereinstimmen.
Verwenden Sie die externe Variable $ Domain (mit einem Wert von M66.NET ), um den Domänennamen in der URL zu ersetzen.
Mit preg_replace_callback_array () können Sie URLs in Zeichenfolgen flexibel verarbeiten und durch neue Domainnamen ersetzen.
Durch Kombination der Funktion des Verschlusss und der Funktion preg_replace_callback_array () können wir externe Variablen sehr bequem im String -Austausch verwenden. Bei Verschluss ermöglicht es PHP, externe Variablen an die Rückruffunktion zu übergeben und diese Variablen in der Ersatzlogik flexibel zu verwenden. Diese Technologie eignet sich besonders für Szenarien, in denen der Ersatzinhalt dynamisch geändert werden muss, z. B. URL -Austausch, komplexe String -Verarbeitung usw.
Hoffentlich kann dieser Artikel Ihnen helfen, besser zu verstehen, wie Sie externe Variable -Ersatzlogik in preg_replace_callback_array () in Kombination mit Verschluss verwenden. Wenn Sie Fragen haben, überlassen Sie bitte eine Nachricht, um zu diskutieren!