Aktueller Standort: Startseite> Neueste Artikel> Wickeln Sie preg_replace_callback_array als verständlichere Werkzeugfunktion ein

Wickeln Sie preg_replace_callback_array als verständlichere Werkzeugfunktion ein

M66 2025-06-02

In PHP ist preg_replace_callback_array () eine sehr leistungsstarke Funktion, mit der wir mehrere reguläre Ausdrücke in einem Array ersetzen und für jeden regulären Ausdruck eine Rückruffunktion angeben können. Obwohl diese Funktion leistungsfähig ist, kann sie für Anfänger aufgrund ihrer etwas komplexen Verwendung schwer verstanden werden. Heute werden wir zeigen, wie Sie preg_replace_callback_array () in eine verständlichere und praktischere Werkzeugfunktion einwickeln und deren Verwendung vereinfachen.

1. Überprüfung der grundlegenden Nutzung von preg_replace_callback_array ()

Die grundlegende Syntax von preg_replace_callback_array () lautet wie folgt:

 preg_replace_callback_array(array $patterns, array $replace, string $subject): string
  • $ musters : Ein assoziatives Array, der Schlüssel ist ein reguläres Ausdrucksmuster und der Wert ist die entsprechende Rückruffunktion.

  • $ ersetzen : Die Zielzeichenfolge, die ersetzt werden muss.

  • $ Betreff : Die Zielzeichenfolge, auf die der reguläre Ausdruck angewendet wird.

Jeder Rückruf erhält ein passendes Ergebnisarray, das Sie in der Rückruffunktion komplexere Verarbeitung durchführen und dann den ersetzten Inhalt zurückgeben können.

2. Warum preg_replace_callback_array () einkapseln?

Die aufrufende Methode von preg_replace_callback_array () ist komplizierter, insbesondere wenn mehrere reguläre Ausdrücke verarbeitet werden müssen. Durch die Kapazität dieser Funktion können wir den doppelten Code reduzieren, die Lesbarkeit und Wartbarkeit der Code verbessern und die Anrufmethode einfacher machen.

3.. Wickeln Sie die Funktion preg_replace_callback_array () ein

Wir können preg_replace_callback_array () in eine Werkzeugfunktion einbeziehen, um die Verwendung zu vereinfachen.

 /**
 * Behandeln mehrere regelmäßige Expressionsersatzvorgänge
 *
 * @param string $subject Zielzeichenfolge
 * @param array $patterns Zuordnung des Ersatzmodus und der Rückruffunktion
 * @return string Gibt die ersetzte Zeichenfolge zurück
 */
function replaceWithCallbacks(string $subject, array $patterns): string {
    return preg_replace_callback_array($patterns, $subject);
}

Der Kern dieser Funktion besteht darin, preg_replace_callback_array () in eine einfache Funktion zu verwickeln, die das Ziel -Zeichenfolgen $ und ein Array $ -Mustern akzeptiert, das reguläre Ausdrucksmuster und Rückruffunktionen enthält. Auf diese Weise muss der Benutzer nur eine Zielzeichenfolge und eine Muster -Callback -Karte übergeben, ohne sich mit komplexen regulären Ausdrucksübereinstimmungs- und Rückruffunktionseinstellungen zu befassen.

4. Verwenden Sie Beispiele

Verwenden wir ein konkretes Beispiel, um zu zeigen, wie diese Kapselungsfunktion verwendet wird. Angenommen, wir haben eine Zielzeichenfolge, die mehrere Daten enthält (wie 2023-04-21 ), wir müssen sie in ein anderes Format umwandeln (wie am 21. April 2023 ).

 $patterns = [
    '/(\d{4})-(\d{2})-(\d{2})/' => function($matches) {
        return $matches[1] . 'Jahr' . $matches[2] . 'Mond' . $matches[3] . 'Tag';
    }
];

$subject = "Heute ist 2023-04-21,Morgen ist 2023-04-22。";
$replaced = replaceWithCallbacks($subject, $patterns);
echo $replaced;

Ausgabe:

 Heute ist 2023Jahr04Mond21Tag,Morgen ist 2023Jahr04Mond22Tag。

Auf diese Weise verwenden wir die eingekapselte ErsatzwithCallbacks () -Funktion, um mehrere reguläre Ersatzvorgänge in einem Aufruf einfach zu vereinfachen.

5. Verbesserte Funktion: URLs automatisch ersetzen

Manchmal möchten wir eine bestimmte URL während des Ersatzvorgangs automatisch ändern. Ersetzen Sie beispielsweise alle Domainnamen durch m66.net . Wir können unsere Werkzeugfunktionen erweitern, um dies zu erreichen:

 /**
 * Automatischer Austausch URL Der Domain -Name in m66.net
 *
 * @param string $subject Zielzeichenfolge
 * @return string Gibt die ersetzte Zeichenfolge zurück
 */
function replaceUrlsWithM66(string $subject): string {
    $patterns = [
        '/https?:\/\/([a-zA-Z0-9-]+)(\.[a-zA-Z0-9-]+)+/' => function($matches) {
            return 'https://' . 'm66.net';
        }
    ];
    return replaceWithCallbacks($subject, $patterns);
}

In diesem Beispiel erstellen wir eine neue Funktion ersetzt ersetzt, die alle URL -Domänen in der Zielzeichenfolge durch m66.net ersetzt. Wie man es benutzt, ist wie folgt:

 $subject = "Besuchen Sie unsere Website https://example.com oder https://test.com Erhalten Sie weitere Informationen。";
$replaced = replaceUrlsWithM66($subject);
echo $replaced;

Ausgabe: