Dans PHP, preg_replace_callback_array () est une fonction très puissante qui nous permet de remplacer les chaînes en fonction des expressions régulières et peut utiliser les fonctions de rappel pour gérer la logique de remplacement. preg_replace_callback_array () nous permet de gérer flexiblement les exigences de remplacement complexes en transmettant plusieurs expressions régulières et des fonctions de rappel correspondantes. Cependant, dans certains cas, nous devons utiliser des variables externes dans la fonction de rappel. Pour y parvenir, nous pouvons combiner des fermetures pour y parvenir.
Cet article expliquera comment utiliser des variables externes lors du remplacement dans preg_replace_callback_array () en utilisant les fermetures (fonctions anonymes).
La fermeture est une fonction anonyme en PHP qui peut accéder et utiliser des variables externes lorsqu'elle est définie. Les fermetures peuvent capturer des variables externes et être utilisées comme contexte d'une fonction. Contrairement aux fonctions ordinaires, les fermetures n'ont pas besoin de spécifier des noms lors de la définition, et sont généralement passés et appelés comme une classe d'objets de fonction.
$variable = 'Variables externes';
$closure = function () use ($variable) {
return 'Utilisé ' . $variable;
};
echo $closure(); // Sortir 'Utilisé Variables externes'
Dans l'exemple ci-dessus, $ variable est une variable externe, que la fermeture capture via le mot-clé d'utilisation et est accessible dans le corps de fermeture.
La fonction preg_replace_callback_array () accepte un tableau associatif, la clé du tableau est une expression régulière et la valeur est la fonction de rappel correspondante. Nous pouvons passer la fermeture en tant que fonction de rappel et utiliser des variables externes à l'intérieur de la fermeture.
$pattern1 = '/\bfoo\b/';
$pattern2 = '/\bbar\b/';
$variable = 'Remplacer le contenu';
$patterns = [
$pattern1 => function ($matches) use ($variable) {
return $variable . ' - ' . $matches[0];
},
$pattern2 => function ($matches) use ($variable) {
return strtoupper($variable) . ' - ' . $matches[0];
}
];
$subject = 'foo bar';
$result = preg_replace_callback_array($patterns, $subject);
echo $result; // Sortir 'Remplacer le contenu - foo Remplacer le contenu - bar'
Le tableau $ motifs contient deux expressions régulières et leurs fonctions de rappel correspondantes.
Chaque fonction de rappel est une fermeture dans laquelle la variable de variable externe est capturée par le mot-clé Utiliser .
Les expressions régulières correspondent à Foo et Bar dans la chaîne, et la fermeture traite le contenu correspondant.
Supposons que nous ayons une chaîne contenant l'URL, nous voulons le remplacer dans preg_replace_callback_array () et devons utiliser un domaine URL externe.
$pattern1 = '/https?:\/\/(www\.)?example\.com/';
$pattern2 = '/https?:\/\/(www\.)?another-example\.com/';
$domain = 'm66.net'; // Utiliser le nom de domaine externe
$patterns = [
$pattern1 => function ($matches) use ($domain) {
return 'https://' . $domain . str_replace('example.com', '', $matches[0]);
},
$pattern2 => function ($matches) use ($domain) {
return 'https://' . $domain . str_replace('another-example.com', '', $matches[0]);
}
];
$subject = 'accéder https://www.example.com ou https://another-example.com Obtenez plus d'informations。';
$result = preg_replace_callback_array($patterns, $subject);
echo $result; // Sortir 'accéder https://m66.net Obtenez plus d'informations。'
Nous définissons deux expressions régulières qui correspondent respectivement à l'exemple.com et à un autre example.com .
Utilisez le domaine $ variable externe (qui a une valeur de m66.net ) pour remplacer le nom de domaine dans l'URL.
Preg_replace_callback_array () vous permet de traiter avec flexible les URL dans les chaînes et de les remplacer par de nouveaux noms de domaine.
En combinant la fonction de fermeture et preg_replace_callback_array () , nous pouvons utiliser des variables externes très commodément en remplacement de chaîne. Avec les fermetures, PHP nous permet de passer des variables externes à la fonction de rappel et d'utiliser ces variables de manière flexible dans la logique de remplacement. Cette technologie est particulièrement adaptée aux scénarios où le contenu de remplacement doit être modifié dynamiquement, comme le remplacement de l'URL, le traitement complexe des chaînes, etc.
J'espère que cet article peut vous aider à mieux comprendre comment utiliser la logique de remplacement des variables externes dans preg_replace_callback_array () en combinaison avec les fermetures. Si vous avez des questions, veuillez laisser un message à discuter!