Lorsque vous traitez avec le remplacement de la chaîne, la fonction prég_replace_callback () de PHP peut traiter de manière flexible les résultats correspondants via une fonction de rappel. Mais si vous avez plusieurs expressions régulières différentes, chacune doit être traitée avec une logique différente, preg_replace_callback_array () est votre choix idéal.
Depuis PHP 7, preg_replace_callback_array () fournit un moyen élégant de définir plusieurs modèles réguliers et leurs fonctions de rappel correspondantes sous la forme d'un tableau associatif.
Cet article vous mènera à travers son utilisation et vous montrera comment gérer simultanément la logique de correspondance multiple avec des exemples.
preg_replace_callback_array(array $patterns_and_callbacks, string $subject, int $limit = -1, int &$count = null): string|array|null
$ motifs_and_callbacks est un tableau associatif, la clé est une expression régulière et la valeur est la fonction de rappel correspondante.
$ Le sujet est la chaîne à traiter.
Supposons que nous souhaitions identifier le lien et l'adresse e-mail dans le texte, envelopper le lien dans une balise <a> et ajouter MailTo: à l'adresse e-mail.
$text = <<<EOT
Bienvenue sur notre site Web http://m66.net/page,Vous pouvez également envoyer un e-mail à support@m66.net consulter。
EOT;
$result = preg_replace_callback_array([
// traiter avec URL
'/\bhttps?:\/\/[^\s]+/i' => function ($matches) {
$url = htmlspecialchars($matches[0]);
return "<a href=\"{$url}\">{$url}</a>";
},
// traiter avec邮箱地址
'/[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;
Bienvenue sur notre site Web <a href="http://m66.net/page">http://m66.net/page</a>,Vous pouvez également envoyer un e-mail à <a href="mailto:support@m66.net">support@m66.net</a> consulter。
preg_replace_callback_array () convient particulièrement à la manipulation:
Divers analyses de texte, telles que Markdown, BBCode, Syntaxe personnalisée, etc.;
Identification et remplacement de plusieurs formats;
Améliorez la lisibilité et la maintenance lors du traitement de différentes structures dans un texte complexe.
L'ordre des expressions régulières est important et les règles précédentes seront exécutées en premier.
Utilisez htmlSpecialChars () pour éviter les attaques XSS (en particulier lors du traitement de l'entrée de l'utilisateur).
La bibliothèque PCRE de PHP est plus puissante dans les versions supérieures, et il est recommandé d'utiliser PHP 7.1+.
En utilisant preg_replace_callback_array () , nous pouvons facilement définir plusieurs modèles réguliers et leurs méthodes de traitement correspondantes, avec une structure de code plus claire et une séparation plus logique. Il s'agit d'un outil puissant et sous-estimé dans le traitement du texte.
Le maîtriser ne rendra pas seulement votre code plus élégant, mais améliorera également considérablement l'efficacité du développement.