Position actuelle: Accueil> Derniers articles> Implémentez le traitement de texte complexe à l'aide de preg_replace_callback_array et array_map

Implémentez le traitement de texte complexe à l'aide de preg_replace_callback_array et array_map

M66 2025-06-02

Dans PHP, preg_replace_callback_array et array_map sont deux outils très puissants qui peuvent être utilisés en combinaison pour gérer les opérations de texte complexes. preg_replace_callback_array vous permet d'effectuer des opérations de remplacement en fonction d'un ensemble de modèles et peut exécuter une fonction de rappel dans chaque pièce de correspondance. Array_map peut appliquer une fonction de rappel à chaque élément du tableau.

Dans cet article, nous utiliserons un exemple pour montrer comment utiliser ces deux fonctions en combinaison pour obtenir un traitement de texte complexe.

Description de la scène

Supposons que nous ayons une chaîne contenant plusieurs URL et texte, nous voulons effectuer un traitement sur ces URL, comme le remplacement du nom de domaine par m66.net , et des remplacements personnalisés pour certaines balises spéciales dans la chaîne (telles que [URL] ). Il s'agit d'une exigence commune, comme dans les robots ou les scénarios de nettoyage de texte.

Étapes de mise en œuvre

Tout d'abord, nous devons définir deux fonctions principales:

  1. Remplacez un modèle spécifique dans une chaîne par preg_replace_callback_array .

  2. Utilisez Array_Map pour effectuer un traitement ou une conversion supplémentaire des résultats remplacés.

Jetons un coup d'œil à l'implémentation spécifique.

 <?php

// 1. Définissez la fonction de rappel qui doit être remplacée
$callback_array = [
    // correspondre URL et remplacer le nom de domaine
    '/https?:\/\/([\w\-]+\.[\w\-]+)/' => function($matches) {
        return 'https://' . 'm66.net';
    },
    // correspondre [url] Tag et processus
    '/\[url\](.*?)\[\/url\]/' => function($matches) {
        return '<a href="' . $matches[1] . '">' . $matches[1] . '</a>';
    }
];

// 2. Texte original
$text = "Ceci est une chaîne de test,Comprend certains URL: https://example.com et un autre lien:[url]https://example2.com[/url]。";

// 3. utiliser preg_replace_callback_array Faire un remplacement
$processed_text = preg_replace_callback_array($callback_array, $text);

// 4. utiliser array_map Traitement des tableaux(Cet exemple convertit simplement le texte en majuscules)
$processed_text_array = array_map('strtoupper', explode(' ', $processed_text));

// 5. Fusionner le texte traité dans une chaîne
$final_text = implode(' ', $processed_text_array);

// Sortir le résultat final
echo $final_text;
?>

Analyse de code

  1. preg_replace_callback_array : Cette fonction accepte un tableau associatif comme premier paramètre, la clé de chaque tableau est une expression régulière et la valeur est une fonction de rappel. Cette fonction de rappel effectue un traitement sur le texte correspondant.

    • Dans cet exemple, nous avons deux modèles:

      • Remplacement de l'URL : correspondez à l'URL à commencer par https: // ou http: // via une expression régulière et remplacer son nom de domaine par m66.net .

      • Remplacement de la balise URL : Faites correspondre l'URL entre les balises [URL] et [/ URL] et convertissez-la au format hyperlien HTML.

  2. array_map : cette fonction applique la fonction de rappel spécifiée à chaque élément du tableau. Ici, nous divisons simplement le texte traité en mots en exploitant et utilisons Array_map pour convertir chaque mot en capitalisation. Enfin, fusionnez-les dans une chaîne via Implose .

Résultat de sortie

Supposons que le texte d'entrée est:

 Ceci est une chaîne de test,Comprend certains URL: https://example.com et un autre lien:[url]https://example2.com[/url]。

Après traitement par preg_replace_callback_array et array_map , le résultat de sortie sera:

 C&#39;est un test Chaîne,Inclure Quelques URL: https://m66.net et 另un Lien:<a href="https://example2.com">https://example2.com</a>。

Résumer

En utilisant preg_replace_callback_array et array_map , nous sommes en mesure d'implémenter un traitement de texte très complexe, en particulier lorsque vous traitez des URL ou des formats de balises. Cette méthode est non seulement efficace, mais également flexible, et peut étendre une logique de traitement différente en fonction des exigences. Cette approche fonctionne bien si vous avez besoin de traiter beaucoup de texte.

Espérons que par cet exemple simple, vous pouvez mieux comprendre comment ces deux fonctions sont utilisées et les appliquer dans le développement réel.