Position actuelle: Accueil> Derniers articles> Quels sont les paramètres de fonction de rappel prég_replace_callback? Expliquez le rôle de chaque paramètre en détail

Quels sont les paramètres de fonction de rappel prég_replace_callback? Expliquez le rôle de chaque paramètre en détail

gitbox 2025-08-18

Dans PHP, preg_replace_callback est une fonction de remplacement régulière très pratique, qui vous permet d'utiliser des fonctions de rappel pour traiter les résultats de correspondance en fonction de la correspondance d'expression régulière. Il est souvent utilisé pour les exigences de remplacement complexes, en particulier lorsque la correspondance du contenu nécessite une modification dynamique. Comprendre les paramètres de la fonction de rappel est crucial pour utiliser correctement cette fonction. Cet article analyse le rôle de chaque paramètre dans la fonction de rappel prég_replace_callback un par un.

Introduction à la fonction preg_replace_callback

La fonction preg_replace_callback est utilisée pour exécuter une fonction de rappel pour remplacer la pièce qui correspond à l'expression régulière. Sa syntaxe de base est la suivante:

 <span><span><span class="hljs-title function_ invoke__">preg_replace_callback</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$callback</span></span><span>, </span><span><span class="hljs-variable">$subject</span></span><span>);
</span></span>
  • $ motif : modèle d'expression régulière.

  • $ rappel : une fonction de rappel utilisée pour gérer les résultats correspondants.

  • $ Sujet : La chaîne à correspondre et à remplacer.

Analyse des paramètres de la fonction de rappel

La fonction de rappel est le cœur de preg_replace_callback . Habituellement, lorsque le contenu correspondant a besoin d'un traitement spécial, nous opérerons chaque correspondance via la fonction de rappel. La définition d'une fonction de rappel peut être une fonction anonyme ou une fonction nommée. Dans l'une ou l'autre forme, la fonction de rappel acceptera un nombre spécifique de paramètres.

1. Correspond au tableau de résultat (matchs)

Le premier paramètre de la fonction de rappel est un tableau qui contient tous les résultats correspondants par l'expression régulière. Son contenu comprend:

  • Le premier élément ( $ correspond [0] ) est la chaîne correspondante entière.

  • Les éléments suivants ( $ correspond [1] , $ correspond [2] , ...) sont les résultats correspondants de chaque groupe de capture (c'est-à-dire les parties parentales dans l'expression régulière).

Par exemple, supposons que nous ayons l'expression régulière suivante:

 <span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/(\d+)\-(\d+)/'</span></span><span>;
</span><span><span class="hljs-variable">$subject</span></span><span> = </span><span><span class="hljs-string">'12-34, 56-78'</span></span><span>;
</span></span>

Ensuite, utilisez preg_replace_callback pour gérer:

 <span><span><span class="hljs-title function_ invoke__">preg_replace_callback</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, function(</span><span><span class="hljs-variable">$matches</span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$matches</span></span><span>);
}, </span><span><span class="hljs-variable">$subject</span></span><span>);
</span></span>

Le résultat de l'exécution est:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; </span><span><span class="hljs-number">12</span></span><span>-</span><span><span class="hljs-number">34</span></span><span>
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; </span><span><span class="hljs-number">12</span></span><span>
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; </span><span><span class="hljs-number">34</span></span><span>
)
</span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; </span><span><span class="hljs-number">56</span></span><span>-</span><span><span class="hljs-number">78</span></span><span>
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; </span><span><span class="hljs-number">56</span></span><span>
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; </span><span><span class="hljs-number">78</span></span><span>
)
</span></span>
  • $ correspond [0] est la chaîne complète qui correspond.

  • $ Matches [1] et $ Matches [2] sont les parties de sous-bassin assorties.

2. Valeur de retour de la fonction de rappel

La valeur de retour de la fonction de rappel sera utilisée à la suite du remplacement. Cela signifie que la fonction de rappel n'est pas seulement une fonction de traitement des données, sa valeur de retour affecte directement le contenu du remplacement. Si la fonction de rappel renvoie une chaîne, la chaîne remplacera la pièce à l'origine.

Par exemple:

 <span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/(\d+)\-(\d+)/'</span></span><span>;
</span><span><span class="hljs-variable">$subject</span></span><span> = </span><span><span class="hljs-string">'12-34, 56-78'</span></span><span>;

</span><span><span class="hljs-variable">$replaced</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace_callback</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, function(</span><span><span class="hljs-variable">$matches</span></span><span>) {
    </span><span><span class="hljs-comment">// Utilisez la somme de deux nombres comme remplacement</span></span><span>
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>] + </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">2</span></span><span>];
}, </span><span><span class="hljs-variable">$subject</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$replaced</span></span><span>;
</span></span>

Le résultat de la sortie est:

 <span><span>46, 134
</span></span>

Dans cet exemple, nous ajoutons les numéros correspondants et remplaçons la chaîne de correspondance d'origine par le résultat.

3. Autres paramètres facultatifs: décalage et limite

La fonction de rappel elle-même peut également obtenir des informations plus détaillées via les paramètres Offset et $ limite . Ces paramètres sont généralement gérés en interne par preg_replace_callback , mais vous pouvez contrôler ces paramètres de manière plus flexible via preg_replace_callback_array . Habituellement, à une utilisation courante, le premier paramètre ( $ correspond à la valeur de retour de la fonction de rappel est suffisant.

en conclusion

La fonction prég_replace_callback et sa fonction de rappel offrent une grande flexibilité, permettant aux développeurs de remplacer dynamiquement en fonction du contenu correspondant. Le premier paramètre $ correspond dans la fonction de rappel fournit des informations détaillées sur la correspondance, y compris la correspondance complète et les informations de groupe capturées, tandis que la valeur de retour de la fonction de rappel détermine directement le contenu remplacé. Après avoir maîtrisé ces concepts de base, vous pouvez utiliser preg_replace_callback pour implémenter des opérations de remplacement régulières complexes.