Dans PHP, la fonction ADDCSLASHES est utilisée pour ajouter des caractères d'échappement par barreaux barreaux à une chaîne. Cela peut nous aider à gérer certains caractères qui doivent être échappés, tels que des citations, des caractères spéciaux, etc. En particulier lors de la correspondance et du remplacement des expressions régulières, la fonction ADDCSLASHES peut être utilisée avec des expressions régulières pour atteindre des exigences d'évasion plus complexes.
La fonction de la fonction addcslashes consiste à échapper aux caractères spécifiques dans une chaîne. La syntaxe de base est la suivante:
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$charlist</span></span><span> )
</span></span>
$ str : String en attente.
$ Charlist : Spécifie la gamme de personnages à échapper.
Par exemple:
<span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Hello, World!"</span></span><span>;
</span><span><span class="hljs-variable">$escaped</span></span><span> = </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-string">'A..Z'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$escaped</span></span><span>; </span><span><span class="hljs-comment">// Sortir: Hello, \World!</span></span><span>
</span></span>
Dans cet exemple, nous précédons toutes les lettres majuscules ( a..z ) avec des barres réformées pour s'échapper.
Dans les expressions régulières, certains personnages (comme les points . , Les supports () , les astérisques * , etc.) ont des significations spéciales. Si nous voulons faire correspondre les personnages eux-mêmes, nous devons utiliser une barre oblique inverse pour l'évasion. Par exemple, la fonction ADDCSLASHES peut nous aider à échapper à ces caractères afin qu'ils apparaissent comme des caractères normaux dans des expressions régulières.
Supposons que nous ayons une chaîne contenant des caractères spéciaux réguliers et que nous voulons échapper à ces caractères pour éviter d'être traités comme des expressions régulières. Nous pouvons utiliser AddcSlashs pour implémenter:
<span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"hello.world?"</span></span><span>;
</span><span><span class="hljs-variable">$escaped</span></span><span> = </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-string">'.?'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$escaped</span></span><span>; </span><span><span class="hljs-comment">// Sortir: hello\.world\?</span></span><span>
</span></span>
Dans l'exemple ci-dessus, AddcSlashes échappe aux points ( . ) Et aux marques d'interrogation ( ? ) Dans la chaîne, ce qui les rend n'a plus de sens particulière dans les expressions régulières.
Lorsqu'ils traitent des expressions régulières générées dynamiquement, ADDCSLASHS peut être facilement échappé pour s'assurer que les caractères spéciaux de la chaîne sont traités correctement. Par exemple, le mot-clé de recherche entré par l'utilisateur peut contenir des caractères spéciaux réguliers, que nous pouvons utiliser AddcSlashes pour échapper:
<span><span><span class="hljs-variable">$search</span></span><span> = </span><span><span class="hljs-string">"a+b"</span></span><span>;
</span><span><span class="hljs-variable">$escapedSearch</span></span><span> = </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-variable">$search</span></span><span>, </span><span><span class="hljs-string">'.*+?^${}()|\[]/'</span></span><span>); </span><span><span class="hljs-comment">// Échapper aux caractères spéciaux réguliers</span></span><span>
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">"/<span class="hljs-subst">$escapedSearch</span></span></span><span>/";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$pattern</span></span><span>; </span><span><span class="hljs-comment">// Sortir: /a\+b/</span></span><span>
</span></span>
De cette façon, nous pouvons nous assurer que la chaîne entrée par l'utilisateur ne provoque pas de comportement inattendu lorsqu'il est utilisé pour l'appariement régulier.
Parfois, nous devons utiliser la fonction ADDCSLASHES dans des opérations de remplacement d'expression régulières pour implémenter des opérations d'échappement complexes. Par exemple, nous voulons remplacer tous les caractères spéciaux dans une chaîne et garder l'état échappé de ces caractères:
<span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"a+b = c*d"</span></span><span>;
</span><span><span class="hljs-variable">$escaped</span></span><span> = </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-string">'.*+?^${}()|\[]/'</span></span><span>);
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">"/([a-zA-Z])/"</span></span><span>; </span><span><span class="hljs-comment">// Faire correspondre les lettres</span></span><span>
</span><span><span class="hljs-variable">$replacement</span></span><span> = </span><span><span class="hljs-string">"\\1"</span></span><span>; </span><span><span class="hljs-comment">// Remplacer par la lettre elle-même</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$replacement</span></span><span>, </span><span><span class="hljs-variable">$escaped</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>; </span><span><span class="hljs-comment">// Sortir: a\+b = c\*d</span></span><span>
</span></span>
Dans cet exemple, nous échappés d'abord à la chaîne d'origine avec AddcSlashes , puis remplaçons la pièce de lettre par preg_replace pour nous assurer que les caractères spéciaux qui ont été échappés ne seront pas interférés avec le processus de remplacement.
L'utilisation de la fonction ADDCSLASHES en combinaison avec des expressions régulières peut considérablement améliorer notre capacité à gérer les caractères spéciaux dans les chaînes. AddcSlashes est un outil très pratique lorsqu'il s'agit d'échapper aux caractères, d'éviter les conflits d'expression réguliers ou d'effectuer des opérations de remplacement complexes. En appliquant de manière flexible cette fonction, nous pouvons effectuer efficacement le traitement des chaînes et les opérations d'expression régulière en PHP.
Étiquettes associées:
addcslashes