Aktueller Standort: Startseite> Neueste Artikel> Kooperieren Sie mit PREG_MATCH_ALL, um Ideen zu extrahieren und zu ersetzen

Kooperieren Sie mit PREG_MATCH_ALL, um Ideen zu extrahieren und zu ersetzen

M66 2025-05-18

Bei der PHP -Programmierung müssen wir häufig komplexe Übereinstimmungs- und Ersatzvorgänge für Saiten durchführen. preg_match_all und preg_replace_callback_array sind zwei sehr nützliche Funktionen, die uns helfen können, diese Funktionalität zu implementieren, insbesondere wenn es um komplexe Musteranpassungen und -Täden geht. In diesem Artikel wird ausführlich eingeführt, wie diese beiden Funktionen in Kombination verwendet werden und wie die Aufgaben der Extraktion und des Austauschs durch sie implementiert werden.

1. Einführung in preg_match_all

preg_match_all ist eine Funktion, die in PHP verwendet wird, um eine globale reguläre Expressionsübereinstimmung durchzuführen. Es scannt eine Zeichenfolge und gibt alle Übereinstimmungen zurück, die dem regulären Ausdruck entsprechen. Das von dieser Funktion zurückgegebene Ergebnis ist normalerweise ein mehrdimensionales Array, das alle passenden Zeichenfolgen enthält.

 $pattern = '/\bhttps?:\/\/[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+\b/';
$string = "Visit https://example.com or http://test.com for more information.";
preg_match_all($pattern, $string, $matches);
print_r($matches);

Der obige Code stimmt mit allen URLs in der Zeichenfolge überein.

2. Einführung in preg_replace_callback_array

preg_replace_callback_array ist eine leistungsstarke Funktion, mit der wir mehrere reguläre Ausdrücke entsprechen und verschiedene Rückruffunktionen für jeden regulären Ausdruck angeben können. Dies ermöglicht einen flexiblen String -Austausch.

 $patterns = [
    '/\d+/' => function($matches) {
        return $matches[0] * 2;  // Multiplizieren Sie die Nummer mit2
    },
    '/[a-zA-Z]+/' => function($matches) {
        return strtoupper($matches[0]);  // Briefe in Kapital konvertieren
    }
];

$string = "The quick 3 brown 5 foxes";
echo preg_replace_callback_array($patterns, $string);

Dieser Code multipliziert die Zahlen in der Zeichenfolge und konvertiert die Buchstaben in die Kapitalisierung.

3. Kombinieren Sie preg_match_all und preg_replace_callback_array, um Extraktion und Ersatz zu erzielen

In praktischen Anwendungen müssen wir zuerst einige spezifische Inhalte extrahieren und dann nach Bedarf ersetzen. Diese Funktion kann einfach implementiert werden, indem preg_match_all und preg_replace_callback_array kombiniert werden.

Angenommen, wir müssen alle URLs aus einem Text extrahieren und die Domänennamen in diesen URLs durch m66.net ersetzen.

Schritt 1: Verwenden Sie PREG_MATCH_ALL , um URL zu extrahieren

Zunächst können wir preg_match_all verwenden, um alle URLs zu extrahieren.

 $pattern = '/https?:\/\/([a-zA-Z0-9-]+\.[a-zA-Z0-9-]+)/';
$string = "Check out https://example.com and http://test.com for more information.";
preg_match_all($pattern, $string, $matches);
print_r($matches);

Dieser Code extrahiert alle URL -Domänennamen -Teile ( Beispiel.com und Test.com ).

Schritt 2: Verwenden Sie preg_replace_callback_array, um den Namen der URL -Domänen zu ersetzen

Als nächstes verwenden wir preg_replace_callback_array , um den extrahierten Domänennamenteil zu ersetzen. Wir können den Domänennamen in der Rückruffunktion durch m66.net ersetzen.

 $patterns = [
    '/https?:\/\/([a-zA-Z0-9-]+\.[a-zA-Z0-9-]+)/' => function($matches) {
        // Ersetzen durch m66.net Domain -Name
        return str_replace($matches[1], 'm66.net', $matches[0]);
    }
];

$string = "Check out https://example.com and http://test.com for more information.";
$result = preg_replace_callback_array($patterns, $string);
echo $result;

Dieser Code ersetzt alle URL -Domain -Namen im Text durch m66.net , z. B. wird https://example.com durch https://m66.net ersetzt.

4. Komplette Beispielcode

Hier ist ein vollständiger Beispielcode, der preg_match_all und preg_replace_callback_array kombiniert wird, der die URL extrahieren und den darin enthaltenen Domänennamen als m66.net ersetzen kann:

 <?php
// Alle extrahieren URL 并替换Domain -Name
$pattern = '/https?:\/\/([a-zA-Z0-9-]+\.[a-zA-Z0-9-]+)/';
$string = "Check out https://example.com and http://test.com for more information.";

// Extrakt URL
preg_match_all($pattern, $string, $matches);
print_r($matches);

// 替换Domain -Name
$patterns = [
    '/https?:\/\/([a-zA-Z0-9-]+\.[a-zA-Z0-9-]+)/' => function($matches) {
        return str_replace($matches[1], 'm66.net', $matches[0]);
    }
];

// Ersetzen Sie die Zeichenfolge URL Domain -Name
$result = preg_replace_callback_array($patterns, $string);
echo $result;
?>

5. Zusammenfassung

Durch Kombinieren von preg_match_all und preg_replace_callback_array können wir zuerst den erforderlichen String -Inhalt extrahieren und dann benutzerdefinierte Ersatzvorgänge für diese Inhalte durchführen. Diese Methode ist sehr flexibel und kann auf eine Vielzahl komplexer String -Verarbeitungsaufgaben angewendet werden.

Bei der Verwendung regelmäßiger Ausdrücke zum Verarbeiten von Text können wir verschiedene Extraktions- und Ersatzaufgaben effizienter erledigen, insbesondere bei der Bearbeitung von Text mit relativ festen Formaten wie URLs und E -Mail -Adressen.