In PHP, preg_replace_callback_array und array_map sind zwei sehr leistungsstarke Tools, die in Kombination verwendet werden können, um komplexe Textvorgänge zu verarbeiten. Preg_Replace_Callback_Array ermöglicht es Ihnen, Ersatzvorgänge basierend auf einem Mustersatz auszuführen und in jedem Matching -Teil eine Rückruffunktion auszuführen. Array_Map kann eine Rückruffunktion auf jedes Element des Arrays anwenden.
In diesem Artikel werden wir ein Beispiel verwenden, um zu zeigen, wie diese beiden Funktionen in Kombination verwendet werden, um eine komplexe Textverarbeitung zu erreichen.
Angenommen , wir haben eine Zeichenfolge, die mehrere URLs und Text enthält. Wir möchten diese URLs verarbeiten, z . Dies ist eine häufige Anforderung, wie beispielsweise in Crawler- oder Textreinigungsszenarien.
Zunächst müssen wir zwei Hauptfunktionen definieren:
Ersetzen Sie ein bestimmtes Muster in einer Zeichenfolge durch preg_replace_callback_array .
Verwenden Sie Array_MAP , um die weitere Verarbeitung oder Umwandlung der ersetzten Ergebnisse durchzuführen.
Schauen wir uns die spezifische Implementierung an.
<?php
// 1. Definieren Sie die Rückruffunktion, die ersetzt werden muss
$callback_array = [
// übereinstimmen URL und ersetzen Sie den Domainnamen
'/https?:\/\/([\w\-]+\.[\w\-]+)/' => function($matches) {
return 'https://' . 'm66.net';
},
// übereinstimmen [url] Tag und Prozess
'/\[url\](.*?)\[\/url\]/' => function($matches) {
return '<a href="' . $matches[1] . '">' . $matches[1] . '</a>';
}
];
// 2. Originaltext
$text = "Dies ist eine Testzeichenfolge,Beinhaltet einige URL: https://example.com und ein weiterer Link:[url]https://example2.com[/url]。";
// 3. verwenden preg_replace_callback_array Ersetzen
$processed_text = preg_replace_callback_array($callback_array, $text);
// 4. verwenden array_map Verarbeitungsarrays(Dieses Beispiel wandelt einfach Text in Großbuchstaben um)
$processed_text_array = array_map('strtoupper', explode(' ', $processed_text));
// 5. Führen Sie den verarbeiteten Text in eine Zeichenfolge zusammen
$final_text = implode(' ', $processed_text_array);
// Das Endergebnis ausgeben
echo $final_text;
?>
PREG_REPLACE_CALLBACK_Array : Diese Funktion akzeptiert ein assoziatives Array als erster Parameter, die Taste jedes Arrays ist ein regulärer Ausdruck und der Wert ist eine Rückruffunktion. Diese Rückruffunktion führt die Verarbeitung im passenden Text durch.
In diesem Beispiel haben wir zwei Muster:
URL -Ersatz : Übereinstimmen Sie die URL, beginnend mit https: // oder http: // über den regulären Ausdruck und ersetzen Sie seinen Domänennamen durch m66.net .
URL -Tag -Austausch : Übereinstimmen der URL zwischen den Tags [URL] und [/url] und konvertieren sie in das HTML -Hyperlink -Format.
Array_Map : Diese Funktion wendet die angegebene Rückruffunktion auf jedes Element des Arrays an. Hier teilen wir den verarbeiteten Text einfach in Wörtern auf, indem wir ARRAY_MAP verwenden, um jedes Wort in die Kapitalisierung umzuwandeln. Schließlich fusionieren Sie sie über implodierende String wieder in eine Zeichenfolge .
Angenommen, der Eingabetxt lautet:
Dies ist eine Testzeichenfolge,Beinhaltet einige URL: https://example.com und ein weiterer Link:[url]https://example2.com[/url]。
Nach der Verarbeitung durch preg_replace_callback_array und array_map wird das Ausgabeergebnis sein:
Das ist eins prüfen Saite,Enthalten Manche URL: https://m66.net Und 另eins Link:<a href="https://example2.com">https://example2.com</a>。
Mit preg_replace_callback_array und array_map können wir eine sehr komplexe Textverarbeitung implementieren, insbesondere im Umgang mit URLs oder Tag -Formaten. Diese Methode ist nicht nur effektiv, sondern auch flexibel und kann die unterschiedliche Verarbeitungslogik gemäß den Anforderungen erweitern. Dieser Ansatz funktioniert gut, wenn Sie viel Text verarbeiten müssen.
Hoffentlich können Sie durch dieses einfache Beispiel besser verstehen, wie diese beiden Funktionen verwendet werden, und sie in der tatsächlichen Entwicklung anwenden.