Table des matières
Qu'est-ce que preg_replace_callback ?
Transformation de contenu dynamique
Travailler avec plusieurs groupes de capture
Utilisation avancée: remplacements avec état
Réflexions finales
Maison développement back-end tutoriel php Exploitation de la puissance des rappels d'expression régulière avec `preg_replace_callback`

Exploitation de la puissance des rappels d'expression régulière avec `preg_replace_callback`

Jul 30, 2025 am 05:37 AM
PHP Strings

preg_replace_callback est un outil puissant de PHP pour le remplacement de chaîne dynamique, qui implémente la logique complexe en appelant des fonctions personnalisées pour chaque correspondance régulière. 1. La syntaxe de fonction est preg_replace_callback ($ motif, $ callback, $ sujet), où $ callback peut traiter dynamiquement le contenu correspondant; 2. Il peut être utilisé pour la transformation numérique, comme le remplacement [10] par [20]; 3. Il prend en charge les opérations de groupe multi-capture, telles que la conversion de la date du format Yyyy-MM-DD en "15 mai 2024"; 4. Il peut maintenir l'état en combinaison avec le mot-clé d'utilisation, comme l'ajout de nombres incrémentiels à chaque mot; 5. Il convient aux scénarios où le jugement contextuel, les opérations mathématiques ou la requête de données externes, et est la méthode préférée pour implémenter un traitement de texte intelligent.

Exploitation de la puissance des rappels d'expression régulière avec `preg_replace_callback`

Lorsque vous avez besoin de plus de contrôle sur les remplacements de chaîne dans PHP, preg_replace_callback est un outil puissant qui va au-delà des simples opérations de recherche-et-replacer. Contrairement à preg_replace , qui permet uniquement des substitutions statiques ou basées sur des motifs, preg_replace_callback vous permet d'exécuter une logique personnalisée pendant chaque remplacement, ce qui le rend idéal pour les transformations dynamiques et contextuelles.

Exploitation de la puissance des rappels d'expression régulière avec `preg_replace_callback`

Qu'est-ce que preg_replace_callback ?

preg_replace_callback applique une expression régulière à une chaîne et, pour chaque match trouvé, appelle une fonction définie par l'utilisateur pour déterminer la valeur de remplacement. Cette fonction de rappel reçoit les segments correspondants en tant que tableau et renvoie la chaîne qui devrait remplacer cette correspondance.

La syntaxe de base est:

Exploitation de la puissance des rappels d'expression régulière avec `preg_replace_callback`
 preg_replace_callback ($ Pattern, $ callback, $ sujet);
  • $pattern : le motif regex à rechercher.
  • $callback : une fonction appelable qui traite chaque correspondance.
  • $subject : La chaîne d'entrée (ou le tableau de chaînes).

Cette configuration est particulièrement utile lorsque le remplacement dépend du contenu de la correspondance ou nécessite une logique comme le comptage, la transformation ou la recherche de données externes.


Transformation de contenu dynamique

L'une des utilisations les plus courantes consiste à transformer du contenu en fonction de ce qui est capturé dans le match.

Exploitation de la puissance des rappels d'expression régulière avec `preg_replace_callback`

Par exemple, supposons que vous souhaitiez doubler la valeur numérique trouvée à l'intérieur des supports carrés:

 $ text = "Les valeurs sont [10], [20] et [30].";

$ result = preg_replace_callback (
    '/\[(\d )\]/',
    fonction ($ correspond) {
        $ nombre = (int) $ correspond [1];
        retour '[' . ($ numéro * 2). ']';
    },
    $ texte
));

Echo $ Résultat; // Sorties: les valeurs sont [20], [30] et [60].

Ici, le regex /\[(\d )\]/ capture les chiffres à l'intérieur des crochets. Le rappel convertit la chaîne capturée en entier, la double et la reprend entre parenthèses.

Ce type de manipulation dynamique n'est pas possible avec PLAIN preg_replace .


Travailler avec plusieurs groupes de capture

Vous pouvez également utiliser des rappels lorsque votre modèle comprend plusieurs groupes de capture et que la logique de remplacement dépend de leur combinaison.

Dites que vous reformatrez les dates de YYYY-MM-DD à un format plus lisible:

 $ datetext = "Event le 2024-05-15 et un autre le 2024-06-20.";

$ result = preg_replace_callback (
    '/ (\ d {4}) - (\ d {2}) - (\ d {2}) /',
    fonction ($ correspond) {
        $ an = $ correspond [1];
        $ mois = $ correspond [2];
        $ day = $ correspond [3];

        $ TimeStamp = StrtoTime ("$ année - $ mois - $ jour");
        Date de retour ('f j, y', $ horodat); // Convertir en "15 mai 2024"
    },
    $ datetext
));

Echo $ Résultat; // Sorties: événement le 15 mai 2024 et un autre le 20 juin 2024.

Le rappel utilise les fonctions strtotime et date de PHP pour produire une date de langue naturelle, ce qu'un remplacement statique ne pourrait jamais atteindre.


Utilisation avancée: remplacements avec état

Parfois, vous devez maintenir l'état sur plusieurs correspondances, comme les compteurs incrémentaires ou le suivi des remplacements.

Étant donné que le rappel peut accéder aux variables à partir de la portée des parents via use , vous pouvez maintenir le contexte:

 $ count = 0;
$ text = "articles: pomme, banane, cerise.";

$ result = preg_replace_callback (
    '/ \ b \ w \ b /',
    fonction ($ correspond) use (& $ count) {
        Retour Strtoupper ($ correspond [0]). '_'. (Nombre $);
    },
    $ texte
));

Echo $ Résultat; // Sorties: items_1: Apple_2, banana_3, Cherry_4.

Remarquez l'utilisation de &$count pour passer le compteur par référence, permettant au rappel de le modifier entre les appels.

Ceci est parfait pour les tâches telles que les correspondances de numérotation, les styles alternatifs ou la logique conditionnelle basée sur l'ordre des correspondances.


Réflexions finales

preg_replace_callback déverrouille un niveau de flexibilité que les fonctions de remplacement des chaînes simples ne peuvent pas correspondre. Que vous soyez:

  • Modification des valeurs capturées mathématiquement
  • Réformer les dates, les étiquettes ou le balisage
  • Appliquer une logique commerciale par match
  • Maintenir l'état à travers les remplacements

… C'est la fonction incontournable pour le traitement de texte intelligent et dynamique en PHP.

N'oubliez pas:

  • Gardez le rappel efficace, en particulier sur les grandes entrées.
  • Utilisez les groupes de capture judicieusement pour passer le contexte nécessaire.
  • Testez toujours les cas de bord - Regex peut être impitoyable.

Avec un modèle solide et un rappel intelligent, vous pouvez transformer du texte complexe avec précision.

Fondamentalement, si vous faites quelque chose au-delà des échanges littéraux, preg_replace_callback est probablement votre meilleur pari.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1527
276
Résolution des pièges communs avec des octets nuls et une terminaison de chaîne en PHP Résolution des pièges communs avec des octets nuls et une terminaison de chaîne en PHP Jul 28, 2025 am 04:42 AM

Nullbytes (\ 0) cancauseUnExpected BehaviorinPhpwhenInterfacing withTextensionsorSystemCallsBecausects \ 0asastringterminator, EventHoughPhpStringSaSaBinary-sawendpreservefullthrength.2.infileoperations, fileNaMSContingNullbyteslik "config.txt \ 0.p

Chaînes comme objets de valeur: une approche moderne des types de chaînes spécifiques au domaine Chaînes comme objets de valeur: une approche moderne des types de chaînes spécifiques au domaine Aug 01, 2025 am 07:48 AM

RawStringSindomain-Adouven Applications devrait être allongé par ValueObjectStopReventBugsAndImproveTypeSafet

Techniques de formatage de chaîne avancées avec `sprintf` et` vsprintf` Techniques de formatage de chaîne avancées avec `sprintf` et` vsprintf` Jul 27, 2025 am 04:29 AM

Sprintf et VSprintf fournissent des fonctions de formatage de chaîne avancées dans PHP. Les réponses sont: 1. La précision du point flottant et le% D peuvent être contrôlées via% .2f, et le type entier peut être assuré avec D, et un rembourrage zéro peut être obtenu avec D; 2. La position variable peut être fixée en utilisant des espaces réservés de position tels que% 1 $ s et% 2 $ d, ce qui est pratique pour l'internationalisation; 3. L'alignement gauche et l'alignement droit peuvent être obtenus via% -10S, ce qui convient à la sortie du tableau ou du journal; 4. VSprintf prend en charge les paramètres du tableau pour faciliter la génération dynamique de modèles SQL ou de messages; 5. Bien qu'il n'y ait pas d'espace réservé d'origine, la syntaxe {name} peut être simulée via des fonctions de rappel régulières, ou le tableau associatif peut être utilisé en combinaison avec extract (); 6. substr_co

Correspondance de modèle avancée avec les fonctions PCRE de PHP Correspondance de modèle avancée avec les fonctions PCRE de PHP Jul 28, 2025 am 04:41 AM

La fonction PCRE de PHP prend en charge les fonctions régulières avancées, 1. Utilisez Capture Group () et le groupe non capture (? :) pour séparer le contenu correspondant et améliorer les performances; 2. Utiliser des affirmations préemptives positives / négatives (? =) Et (?!)) Et des affirmations post-émission (???)) et des affirmations post-émission (??

Manipulation défensive des cordes: prévenir les XS et les attaques d'injection en PHP Manipulation défensive des cordes: prévenir les XS et les attaques d'injection en PHP Jul 25, 2025 pm 06:03 PM

TODEFENDAGAINSTXSSSANDINIFFRIMESS

Navigation du labyrinthe de PHP String Encoding: UTF-8 et au-delà Navigation du labyrinthe de PHP String Encoding: UTF-8 et au-delà Jul 26, 2025 am 09:44 AM

Le traitement UTF-8 doit être géré manuellement dans PHP, car PHP ne prend pas en charge Unicode par défaut; 1. Utilisez l'extension MBSTRING pour fournir des fonctions de sécurité multi-octets telles que MB_STRLEN, MB_SUBSTR et spécifiez explicitement le codage UTF-8; 2. Assurez-vous que la connexion de la base de données utilise un jeu de caractères UTF8MB4; 3. Déclarer UTF-8 via les en-têtes HTTP et les balises HTML Meta; 4. Vérifiez et convertissez l'encodage lors de la lecture et de l'écriture de fichiers; 5. Assurez-vous que les données sont UTF-8 avant le traitement JSON; 6. Utilisez MB_DETECT_ENCODING et ICONV pour la détection et la conversion de codage; 7. La prévention de la corruption des données est meilleure que post-réparation, et UTF-8 doit être utilisée à tous les niveaux pour éviter les problèmes de code brouillé.

Déballage des données binaires: un guide pratique de `pack () de PHP` et `unback () ' Déballage des données binaires: un guide pratique de `pack () de PHP` et `unback () ' Jul 25, 2025 pm 05:59 PM

Les fonctions PHP Pack () et Unpack () sont utilisées pour convertir entre les variables PHP et les données binaires. 1.Pack () Packages Packages Variables telles que les entiers et les chaînes dans les données binaires, et déballer () déballe les données binaires en variables PHP. Les deux s'appuient sur les chaînes de format pour spécifier les règles de conversion. 2. Les codes de format commun incluent C / C (8 bits avec / caractères non signés), S / S (entier court 16 bits), L / L / V / N (entier de longue précision 32 bits), A / A (Fill String), X (Null Byte), etc. Grand-endian (norme réseau). V doit être utilisé en premier lors de la communication sur les plateformes.

Au-delà de JSON: comprendre la sérialisation des cordes native de PHP Au-delà de JSON: comprendre la sérialisation des cordes native de PHP Jul 25, 2025 pm 05:58 PM

La sérialisation native de PHP est plus adaptée au stockage et à la transmission des données internes de PHP que JSON, 1. Parce qu'il peut conserver des types de données complets (tels que INT, Float, Bool, etc.); 2. Soutenir les propriétés d'objets privées et protégées; 3. Peut gérer les références récursives en toute sécurité; 4. Il n'y a pas besoin de conversion de type manuel pendant la désérialisation; 5. C'est généralement mieux que JSON en performance; Mais il ne doit pas être utilisé dans des scénarios transversaux, et Unserialize () ne doit jamais être appelé pour des entrées non fiables pour éviter de déclencher des attaques d'exécution de code distantes. Il est recommandé de l'utiliser lorsqu'il est limité à l'environnement PHP et nécessite des données à haute fidélité.

See all articles