Aktueller Standort: Startseite> Neueste Artikel> Wie vereinfache ich die Rückruflogik von PREG_REPLACE_CALLBACK_Array mit der benannten Gruppierung?

Wie vereinfache ich die Rückruflogik von PREG_REPLACE_CALLBACK_Array mit der benannten Gruppierung?

M66 2025-06-02

In PHP ist preg_replace_callback_array eine sehr leistungsstarke Funktion, die mehrere reguläre Ausdrücke verarbeiten und angegebene Rückruffunktionen ausführen kann, wenn sie angepasst werden. In der Regel müssen wir eine Rückruffunktion für jeden regulären Ausdruck angeben. Wenn die logische Komplexität zunimmt, kann dieser Ansatz dazu führen, dass Rückruffunktionen ausführlich und nicht einfach zu warten sind. Um diesen Prozess zu vereinfachen, können wir benannte Capture -Gruppen verwenden, um die Rückruflogik von preg_replace_callback_array zu vereinfachen, wodurch der Code klarer und leichter zu verwalten ist.

Wie heißt Gruppierung?

In regulären Ausdrücken ist benannte Gruppierung eine benannte Kennung für das Matching -Ergebnis, mit dem Sie nicht nur durch numerische Indexierung auf den passenden Inhalt zugreifen können. Die Syntax für die Benennung einer Gruppe lautet wie folgt:

 (?<name>pattern)

Wo Name der Name ist, den Sie für diese Gruppierung geben, und das Muster ist das tatsächliche reguläre Ausdrucksmuster.

Verwenden Sie benannte Gruppierung, um preg_replace_callback_array zu vereinfachen

In preg_replace_callback_array bestehen wir normalerweise ein Array, das mehrere Muster und entsprechende Rückruffunktionen enthält. Wenn mehrere reguläre Ausdrücke verarbeitet werden müssen, ist es häufig erforderlich, eine Rückruffunktion für jeden Ausdruck zu schreiben, der den Code -ausführlich machen kann. Durch die Verwendung von Named Grouping können wir intuitiver übereinstimmende Ergebnisse erzielen, wodurch die Abhängigkeit von der Rückruflogik verringert wird.

Hier ist ein spezifisches Beispiel:

Beispiel: Verarbeitungsparameter in URLs

Angenommen, wir haben eine Reihe von URLs, die einige der Abfrageparameter durch preg_replace_callback_array ersetzen müssen. Wir können die Logik der Rückruffunktionen mit der mit dem Namen GROUPSIONIERENEN NACHEN vereinfachen.

 <?php
// Definieren Sie ein Array, das regelmäßige Ausdrücke und Rückruffunktionen enthält
$patterns = [
    '/(?<scheme>https?):\/\/(?<host>[a-zA-Z0-9.-]+)\/(?<path>[^?]+)\?(?<query>.*)/' => function ($matches) {
        // Zugriffsergebnisse durch benannte Gruppierung zugreifen
        $scheme = $matches['scheme'];
        $host = $matches['host'];
        $path = $matches['path'];
        $query = $matches['query'];

        // Hier können Sie Abfrageparameter verarbeiten
        $query = str_replace('example.com', 'm66.net', $query);

        // Gibt die ersetzte Zeichenfolge zurück
        return $scheme . '://' . $host . '/' . $path . '?' . $query;
    }
];

// Was zu tun hat URL Liste
$urls = [
    'https://example.com/path/to/resource?param1=value1&param2=value2',
    'http://example.com/another/path?param1=value1',
];

// verwenden preg_replace_callback_array Ersetzen
$updatedUrls = preg_replace_callback_array($patterns, $urls);

// Das Ergebnis nach dem Ersatz ausgeben
foreach ($updatedUrls as $url) {
    echo $url . PHP_EOL;
}
?>

Code Parsen:

  1. Regulärer Ausdruck Teil:

    • ( ?

    • ( ?

    • ( ?

    • ( ?

  2. Rückruffunktion Teil: In der Rückruffunktion erhalten wir die Teile der regulären Ausdrucksübereinstimmung, indem wir die Gruppierung von Übereinstimmungen (z. B. $ Matches ['Schema'] nennen), was den Zugriffsprozess vereinfacht. Wir haben auch den Abfrage -String -Teil verarbeitet und den Domänennamen Beispiel.com durch m66.net ersetzt.

  3. PREG_REPLACE_CALLBACK_Array : Diese Funktion akzeptiert ein Array von regulären Ausdrücken und Rückruffunktionen, entspricht der URL nacheinander und führt die entsprechenden Rückruffunktionen aus.

Ergebnisse Ausgabe: