Position actuelle: Accueil> Derniers articles> Utilisez preg_replace_callback_array pour remplacer le contenu correspondant à l'expression régulière multiple

Utilisez preg_replace_callback_array pour remplacer le contenu correspondant à l'expression régulière multiple

M66 2025-05-17

Dans PHP, la fonction preg_replace_callback_array est un outil très pratique qui vous permet de faire correspondre plusieurs expressions régulières et de remplacer le contenu correspondant. Cette fonction peut considérablement simplifier le code qui nécessite le traitement simultanément des tâches de remplacement régulières. Cet article expliquera comment utiliser la fonction preg_replace_callback_array , en particulier lorsque vous devez remplacer le contenu correspondant à plusieurs expressions régulières en même temps.

Quelle est la fonction preg_replace_callback_array?

La fonction preg_replace_callback_array a été introduite après PHP 5.3.0. Sa fonction est similaire à la fonction preg_replace_callback , mais prend en charge le traitement de plusieurs expressions régulières en même temps. Son prototype de fonction est le suivant:

 preg_replace_callback_array(array $patterns, string $subject);
  • $ motifs : un tableau associatif où la clé est une expression régulière et la valeur est une fonction de rappel.

  • $ Sujet : La chaîne d'entrée à correspondre et à remplacer.

Exemple: utilisez la fonction preg_replace_callback_array pour effectuer plusieurs remplacements

Supposons que nous ayons une chaîne contenant plusieurs types différents d'URL et de formats de date, et nous devons remplacer ces URL et dates en même temps. Voici un exemple utilisant la fonction preg_replace_callback_array :

 <?php

// Entrer la chaîne
$text = "Visit our website at http://example.com for more info. Also, the event is on 2023-04-21.";

// Définir la fonction de rappel
$patterns = [
    '/http(s)?:\/\/([^\/]+)/' => function ($matches) {
        // remplacerURLLe nom de domaine est m66.net
        return "http://" . 'm66.net' . substr($matches[0], strlen($matches[1]) + strlen($matches[2]) + 3);
    },
    '/\d{4}-\d{2}-\d{2}/' => function ($matches) {
        // remplacer日期格式
        return str_replace("-", "/", $matches[0]);
    }
];

// utiliser preg_replace_callback_array 函数进行多个remplacer
$result = preg_replace_callback_array($patterns, $text);

// Résultat de sortie
echo $result;

?>

Explication du code:

  1. Chaîne d'entrée : texte contenant l'URL et la date.

  2. Expression régulière :

    • Le premier régulier / http (s) ?: \ / \ / ([^ \ /] +) / est utilisé pour faire correspondre l'URL.

    • Le deuxième régulier / \ d {4} - \ d {2} - \ d {2} / est utilisé pour faire correspondre la date (par exemple, 2023-04-21 ).

  3. Fonction de rappel :

    • Pour l'URL, nous remplaçons sa partie de nom de domaine par m66.net , puis laissons la partie de chemin inchangée.

    • Pour les dates, nous remplaçons - par / , convertissant ainsi le format de date en 2023/04/21 .

  4. Sortie du résultat : la sortie finale du texte remplacé.

Sortir:

 Visit our website at http://m66.net for more info. Also, the event is on 2023/04/21.

Choses à noter

  • Lorsque vous utilisez preg_replace_callback_array , il est nécessaire de s'assurer que chaque fonction de rappel de l'expression régulière peut renvoyer une valeur de remplacement.

  • preg_replace_callback_array correspond et remplace par ordre d'expressions régulières, alors assurez-vous que les expressions régulières ne sont pas en conflit.

  • Si des opérations de remplacement complexes sont nécessaires, les fonctions de rappel sont essentielles car elles vous permettent de les gérer de manière flexible en fonction du contenu correspondant régulier.

De cette façon, preg_replace_callback_array nous permet de gérer efficacement plusieurs tâches de remplacement d'expression régulières, et le code est plus concis et plus facile à comprendre. J'espère que cet article vous aidera à comprendre comment utiliser cette fonction pour remplacer simultanément plusieurs correspondances régulières.