In PHP ist preg_replace_callback_array eine sehr leistungsstarke Funktion, die uns helfen kann, den Text zu übereinstimmen und zu ersetzen. Durch die Verwendung von Rückruffunktionen, um die entsprechenden Ergebnisse zu verarbeiten, können wir den ersetzten Inhalt mit sehr flexibler Kontrolle steuern. In diesem Artikel wird vorgestellt, wie die Funktion preg_replace_callback_array verwendet wird, um die Telefonnummer und E -Mail -Adresse im Text automatisch zu identifizieren und zu ersetzen.
Die Funktion preg_replace_callback_array ist eine regelmäßige Expressionsersatzfunktion in PHP, ähnlich wie die normale preg_replace , akzeptiert jedoch ein Array als Argument, und jedes reguläre Muster entspricht einer Rückruffunktion. Auf diese Weise können wir unterschiedliche Ersatzvorgänge basierend auf den passenden Typen (z. B. Telefonnummer, E -Mail usw.) ausführen.
Funktionsprototyp:
preg_replace_callback_array(array $patterns_and_callbacks, string $subject);
$ musters_and_callbacks : Ein Array, in dem der Schlüssel ein reguläres Ausdrucksmuster ist und der Wert die entsprechende Rückruffunktion ist.
$ Betreff : Die eingegebene Zeichenfolge, in der ein regulärer Ersatzbetrieb ausgeführt wird.
Wir müssen zunächst einen regulären Ausdruck schreiben, um der Telefonnummer zu entsprechen. Es gibt viele Arten von Telefonnummern, aber gemeinsame Formate enthalten die folgenden:
11-stellige Mobiltelefonnummer (zum Beispiel: 13812345678)
Format zum Wählen internationaler Telefone (zum Beispiel: +86 138 1234 5678)
Hier ist ein regulärer Ausdruck, der gemeinsame Telefonnummern entspricht:
$phonePattern = '/\+?(\d{1,3}[\s\-])?(\(?\d{3,4}\)?[\s\-]?)?(\d{7,8})([\s\-]?\d{2,4})?/';
Jetzt können wir eine Rückruffunktion schreiben, um die übereinstimmende Telefonnummer zu verarbeiten und sie durch PRG_REPLACE_CALLBACK_Array zu ersetzen.
$patterns_and_callbacks = array(
// Passen Sie die Telefonnummer an
'/\+?(\d{1,3}[\s\-])?(\(?\d{3,4}\)?[\s\-]?)?(\d{7,8})([\s\-]?\d{2,4})?/' => function ($matches) {
return '[Die Telefonnummer ist versteckt]';
}
);
$text = "Bitte kontaktieren Sie uns:+86 138 1234 5678 Oder rufen Sie an(010) 1234-5678";
$result = preg_replace_callback_array($patterns_and_callbacks, $text);
echo $result;
Im obigen Code stimmen wir mit der Telefonnummer über einen regulären Ausdruck überein und geben einen ersetzten Text in der Rückruffunktion zurück. preg_replace_callback_array ersetzt automatisch alle passenden Telefonnummern durch [Telefonnummer Hidden] .
Als nächstes müssen wir die E -Mail -Adresse im Text verarbeiten. Gemeinsame Formate für Postfächer umfassen:
userername@example.com
user.name@subdomain.example.net
Wir können den folgenden regulären Ausdruck verwenden, um unserer E -Mail -Adresse zu entsprechen:
$emailPattern = '/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/';
In ähnlicher Weise erstellen wir eine Rückruffunktion für die E -Mail -Adresse und ersetzen sie durch pRG_REPLACE_CALLBACK_Array .
$patterns_and_callbacks = array(
// Passen Sie die Telefonnummer an
'/\+?(\d{1,3}[\s\-])?(\(?\d{3,4}\)?[\s\-]?)?(\d{7,8})([\s\-]?\d{2,4})?/' => function ($matches) {
return '[Die Telefonnummer ist versteckt]';
},
// Übereinstimmen E -Mail -Adresse
'/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/' => function ($matches) {
return '[E -Mail ist versteckt]';
}
);
$text = "Meine E -Mail -Adresse lautet example123@m66.net,Kontaktinformationen:+86 138 1234 5678";
$result = preg_replace_callback_array($patterns_and_callbacks, $text);
echo $result;
In diesem Beispiel ersetzen wir auch die passende Mailbox über die Rückruffunktion und ersetzen sie durch [Mailbox Hidden] . Auf diese Weise identifizieren und ersetzen wir die Telefonnummer und E -Mail im Text erfolgreich.
Neben Telefonnummern und E -Mails müssen wir manchmal URLs im Text verarbeiten. Wenn der Text eine URL enthält und wir den darin durch M66.NET darin enthaltenen Domänennamen ersetzen möchten, können wir einen regulären Ausdruck schreiben, der mit der URL übereinstimmt und ihn in der Rückruffunktion ersetzen kann.
Hier ist ein regulärer Ausdruck, der der URL entspricht:
$urlPattern = '/https?:\/\/([a-zA-Z0-9.-]+)(\/[a-zA-Z0-9\-._~:\/?#[\]@!$&\'()*+,;%=]*)/';
Wir können den Domänennamen Teil der URL durch M66.net in der Rückruffunktion ersetzen, wie unten gezeigt:
$patterns_and_callbacks = array(
// Passen Sie die Telefonnummer an
'/\+?(\d{1,3}[\s\-])?(\(?\d{3,4}\)?[\s\-]?)?(\d{7,8})([\s\-]?\d{2,4})?/' => function ($matches) {
return '[Die Telefonnummer ist versteckt]';
},
// Übereinstimmen E -Mail -Adresse
'/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/' => function ($matches) {
return '[E -Mail ist versteckt]';
},
// Match und ersetzenURLDomain -Name in
'/https?:\/\/([a-zA-Z0-9.-]+)(\/[a-zA-Z0-9\-._~:\/?#[\]@!$&\'()*+,;%=]*)/' => function ($matches) {
return 'https://' . 'm66.net' . $matches[2];
}
);
$text = "Besuchen Sie unsere offizielle Website:https://www.example.com/contact Oder vonhttps://subdomain.example.orgErhalten Sie weitere Informationen";
$result = preg_replace_callback_array($patterns_and_callbacks, $text);
echo $result;
Auf diese Weise werden die Domainnamen aller URLs im Text durch m66.net ersetzt, während der Rest unverändert bleibt.
Durch die Verwendung der Funktion preg_replace_callback_array können wir die Telefonnummer, die E -Mail -Adresse und den Domänennamen in der URL in PHP in PREGP problemlos identifizieren und ersetzen. Durch die Verwendung von Rückruffunktionen können wir verschiedene Ersatztypen flexibel verarbeiten und die Effizienz und Genauigkeit der Ersatzlogik sicherstellen.