Dans PHP, la fonction preg_replace_callback_array est un outil puissant qui exécute une fonction de rappel pour le remplacer lorsqu'une expression régulière correspond à un modèle spécifique. Il peut gérer les opérations de remplacement complexes de chaîne, en particulier lorsque vous souhaitez gérer plusieurs modèles et fonctions de rappel, il fournit une manière plus concise et efficace.
Cet article expliquera comment utiliser preg_replace_callback_array pour convertir les balises personnalisées en éléments HTML. Supposons que nous ayons une balise personnalisée avec un format similaire à [Custom_tag] , que nous voulons convertir en un élément HTML standard (par exemple <v> ).
Tout d'abord, nous devons comprendre l'utilisation de base de preg_replace_callback_array . La syntaxe de cette fonction est la suivante:
preg_replace_callback_array(array $patterns_and_callbacks, string $subject);
$ motifs_and_callbacks : est un tableau associatif contenant des expressions et des fonctions de rappel régulières. Chaque expression régulière est appliquée à la chaîne d'entrée et la fonction de rappel correspondante est exécutée lorsqu'elle est appariée.
$ Sujet : est la chaîne d'entrée à correspondre et à remplacer.
Supposons que notre tâche consiste à convertir les balises personnalisées suivantes en éléments HTML:
[Custom_tag] Convertir en <div class = "personnalisé-tag"> balise
[un autre_tag] Converti en <span class = "Another-tag"> TAG
Ensuite, nous écrivons le code pour terminer cette transformation à l'aide de preg_replace_callback_array :
<?php
// Entrer la chaîne,Inclure des balises personnalisées
$input_string = "Ceci est inclus[custom_tag]Étiquette[/custom_tag]et[another_tag]Étiquette[/another_tag]Exemples。";
// 定义正则表达式et回调函数
$patterns_and_callbacks = [
'/\[custom_tag\](.*?)\[\/custom_tag\]/s' => function ($matches) {
return "<div class='custom-tag'>" . htmlspecialchars($matches[1]) . "</div>";
},
'/\[another_tag\](.*?)\[\/another_tag\]/s' => function ($matches) {
return "<span class='another-tag'>" . htmlspecialchars($matches[1]) . "</span>";
}
];
// utiliser preg_replace_callback_array Faire un remplacement
$result = preg_replace_callback_array($patterns_and_callbacks, $input_string);
// Résultat de sortie
echo $result;
?>
Le premier paramètre de preg_replace_callback_array est un tableau associatif qui contient des expressions régulières et des fonctions de rappel correspondantes. Lorsque l'expression régulière correspond à la balise [Custom_tag] ou [Another_Tag] , la fonction de rappel correspondante est appelée.
Dans la fonction de rappel, nous utilisons la fonction HTMLSpecialChars pour échapper au contenu TAG pour empêcher les attaques XSS.
Enfin, la balise personnalisée d'origine est remplacée par l'élément HTML renvoyé par la fonction de rappel.
Supposons que la chaîne d'entrée est:
Ceci est inclus[custom_tag]Étiquette[/custom_tag]et[another_tag]Étiquette[/another_tag]Exemples。
Après avoir exécuté le code ci-dessus, la sortie sera:
Ceci est inclus<div class='custom-tag'>Étiquette</div>et<span class='another-tag'>Étiquette</span>Exemples。
preg_replace_callback_array est un outil puissant qui simplifie les scénarios qui nécessitent plusieurs opérations de remplacement régulières. Dans cet exemple, nous avons réussi à convertir les balises personnalisées [Custom_tag] et [un autre_tag] en éléments HTML <v> et <span> .
Si vous devez gérer des conversions d'étiquettes plus complexes, vous pouvez étendre la logique de la fonction de rappel en fonction de vos besoins. En utilisant cette fonction raisonnablement, vous pouvez facilement gérer diverses tâches de remplacement et de traitement des chaînes.