Beim Umgang mit String -Austausch kann die Funktion PREG_REPLACE_CALLBACK () von PHP die Übereinstimmungsergebnisse über eine Rückruffunktion flexibel verarbeiten. Wenn Sie jedoch mehrere verschiedene reguläre Ausdrücke haben, müssen jedes mit unterschiedlicher Logik verarbeitet werden, ist preg_replace_callback_array () Ihre ideale Wahl.
Seit Php 7 bietet PREG_REPLACE_CALLBACK_Array () eine elegante Möglichkeit, mehrere reguläre Muster und ihre entsprechenden Rückruffunktionen in Form eines assoziativen Arrays zu definieren.
Dieser Artikel führt Sie durch seine Verwendung und zeigt Ihnen, wie Sie mit Beispielen gleichzeitig mit mehreren passenden Logik umgehen können.
preg_replace_callback_array(array $patterns_and_callbacks, string $subject, int $limit = -1, int &$count = null): string|array|null
$ musters_and_callbacks ist ein assoziatives Array, der Schlüssel ist ein regulärer Ausdruck und der Wert ist die entsprechende Rückruffunktion.
$ Betreff ist die zu verarbeitende Zeichenfolge.
Nehmen wir an, wir möchten den Link und die E -Mail -Adresse im Text identifizieren, den Link in ein <a> Tags einwickeln und Mailto: zur E -Mail -Adresse hinzufügen.
$text = <<<EOT
Willkommen auf unserer Website http://m66.net/page,Sie können auch eine E -Mail an senden an support@m66.net konsultieren。
EOT;
$result = preg_replace_callback_array([
// bewältigen URL
'/\bhttps?:\/\/[^\s]+/i' => function ($matches) {
$url = htmlspecialchars($matches[0]);
return "<a href=\"{$url}\">{$url}</a>";
},
// bewältigen邮箱地址
'/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/i' => function ($matches) {
$email = htmlspecialchars($matches[0]);
return "<a href=\"mailto:{$email}\">{$email}</a>";
}
], $text);
echo $result;
Willkommen auf unserer Website <a href="http://m66.net/page">http://m66.net/page</a>,Sie können auch eine E -Mail an senden an <a href="mailto:support@m66.net">support@m66.net</a> konsultieren。
preg_replace_callback_array () eignet sich besonders für die Handhabung geeignet:
Verschiedene Textanalysen wie Markdown, BBCode, benutzerdefinierte Syntax usw.;
Identifizierung und Ersatz mehrerer Formate;
Verbessern Sie die Lesbarkeit und Wartung bei der Verarbeitung verschiedener Strukturen im komplexen Text.
Die Reihenfolge der regulären Ausdrücke ist wichtig, und die vorherigen Regeln werden zuerst ausgeführt.
Verwenden Sie HTMLSpecialChars (), um XSS -Angriffe zu vermeiden (insbesondere bei der Verarbeitung von Benutzereingaben).
Die PCRE -Bibliothek von PHP ist in höheren Versionen leistungsfähiger und wird empfohlen, PHP 7.1+ zu verwenden.
Mit preg_replace_callback_array () können wir mehrere reguläre Muster und deren entsprechende Verarbeitungsmethoden mit klarerer Codestruktur und logischer Trennung leicht definieren. Es ist ein leistungsstarkes und unterschätztes Werkzeug in der Textverarbeitung.
Wenn Sie es beherrschen, wird Ihr Code nicht nur eleganter, sondern auch die Entwicklungseffizienz erheblich verbessern.