Position actuelle: Accueil> Derniers articles> Vous voulez garder les caractères originaux et éviter les évasions répétées? Essayez d'utiliser ADDCSLASHES comme celui-ci

Vous voulez garder les caractères originaux et éviter les évasions répétées? Essayez d'utiliser ADDCSLASHES comme celui-ci

gitbox 2025-09-15

Dans la programmation PHP, vous rencontrez souvent des situations où les chaînes doivent être échappées, en particulier lorsque vous traitez avec l'interaction avec les bases de données, les expressions régulières ou la sortie du contenu HTML. Les personnages d'échappement nous aident à éviter que certains caractères spéciaux soient analysés ou exécutés de manière incorrecte. Pour la plupart des cas, la fonction Addslashes () peut échapper efficacement aux chaînes, mais dans certains scénarios spécifiques, nous voulons peut-être préserver les caractères originaux tout en évitant les évasions répétées. À ce stade, la fonction addcslashes () fournit une solution plus flexible.

Introduction à la fonction addcslashes ()

La fonction addcslashes () dans PHP est utilisée pour échapper aux caractères spécifiés dans une chaîne. Contrairement à ADDSLASHES () , AddCSlashes () permet aux développeurs de spécifier quels caractères doivent être échappés, ce qui nous donne plus de contrôle.

Définition de la fonction

 <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 : La chaîne à traiter.

  • $ Charlist : Le jeu de caractères qui doit être échappé. Ce jeu de caractères peut être un seul caractère, plusieurs caractères ou même une gamme de caractères (par exemple: AZ ).

AddcSlashes () échappe aux caractères dans $ Str qui correspondent à celui spécifié dans $ charlist . Contrairement à ADDSLASHES () , AddCslashes () n'échappe pas directement à des devis ( ' ) ou à double guillemets ( " ), mais détermine plutôt ce qui doit être échappé en fonction du jeu de caractères dans $ charlist .

Scénarios d'application

1. Gardez les caractères originaux mais évitez les évasions répétées

Supposons que vous ayez une chaîne contenant plusieurs caractères échappés et que vous souhaitez échapper à ces caractères, mais ne voulez pas traiter à plusieurs reprises les caractères échappés. L'utilisation de AddCslashes () peut nous aider à éviter les évasions répétées sans affecter les caractères d'origine.

Exemple:

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"This is a 'test' string with special characters like \n, \r, and \t."</span></span><span>;

</span><span><span class="hljs-variable">$escapedStr</span></span><span> = </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">"\n\r\t"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$escapedStr</span></span><span>;
</span></span>

Sortir :

 <span><span>This </span><span><span class="hljs-keyword">is</span></span><span> a </span><span><span class="hljs-string">'test'</span></span><span> </span><span><span class="hljs-built_in">string</span></span><span> </span><span><span class="hljs-keyword">with</span></span><span> special characters like \n, \r, </span><span><span class="hljs-keyword">and</span></span><span> \t.
</span></span>

Dans cet exemple, nous n'avons échappé que \ n , \ r et \ t , et ajoute () échappe à plus de caractères. Si la chaîne contient déjà ces caractères échappés, AddCSlashes () peut nous aider à éviter le traitement répété de ces caractères.

2. Échapper aux jeux de caractères spécifiques

Parfois, nous pouvons seulement vouloir échapper aux caractères dans certaines gammes, tels que: toutes les lettres ou chiffres minuscules. Avec la flexibilité de AddCslashes (), nous pouvons le faire.

Exemple:

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"This is a test string 1234!"</span></span><span>;
</span><span><span class="hljs-variable">$escapedStr</span></span><span> = </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">'a-z'</span></span><span>);  </span><span><span class="hljs-comment">// Échapper à toutes les lettres minuscules</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$escapedStr</span></span><span>;
</span></span>

Sortir :

 <span><span>This </span><span><span class="hljs-keyword">is</span></span><span> \a \t\es\ t </span><span><span class="hljs-built_in">string</span></span><span> </span><span><span class="hljs-number">1234</span></span><span>!
</span></span>

Dans cet exemple, seule la lettre minuscule AZ est échappée. Vous pouvez modifier le jeu de caractères au besoin pour effectuer un traitement d'évasion plus personnalisé.

3. Échapper aux caractères spéciaux dans les expressions régulières

Si vous souhaitez gérer en toute sécurité des caractères spéciaux lors de la construction d'expressions régulières, AddCslashes () est un outil très utile. Il peut vous aider à échapper aux caractères qui interfèrent avec les expressions régulières, telles que les points ( . ), Les astérisques ( * ), etc.

Exemple:

 <span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">"This is a test with some special characters like . * + ?"</span></span><span>;
</span><span><span class="hljs-variable">$escapedPattern</span></span><span> = </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-variable">$pattern</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">$escapedPattern</span></span><span>;
</span></span>

Sortir :

 <span><span>This </span><span><span class="hljs-keyword">is</span></span><span> a test </span><span><span class="hljs-keyword">with</span></span><span> </span><span><span class="hljs-keyword">some</span></span><span> special characters </span><span><span class="hljs-keyword">like</span></span><span> \. \* \+ \? 
</span></span>

De cette façon, nous pouvons nous assurer que nous n'augmentons pas des erreurs ou des résultats de correspondance inattendus lors de la construction d'expressions régulières.

4. Utilisé pour la requête SQL

Il est important d'éviter l'injection de SQL lors de la gestion des requêtes SQL. Bien que l'utilisation des instructions de prétraitement PDO ou MYSQLI soit plus recommandée, dans certains cas, nous pouvons également devoir échapper à la saisie des utilisateurs pour éviter les attaques potentielles d'injection SQL. AddCslashes () peut nous aider à échapper aux caractères spéciaux dans la saisie des utilisateurs, améliorant ainsi la sécurité des requêtes SQL.

Exemple:

 <span><span><span class="hljs-variable">$userInput</span></span><span> = </span><span><span class="hljs-string">"Robert'); DROP TABLE Students;--"</span></span><span>;
</span><span><span class="hljs-variable">$escapedInput</span></span><span> = </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-variable">$userInput</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">$escapedInput</span></span><span>;
</span></span>

Sortir :

 <span><span>Robert\'); DROP TABLE Students;-- 
</span></span>

En échappant aux citations simples, nous pouvons éviter les attaques d'injection SQL. Bien que cette méthode ne soit pas aussi sécurisée que les instructions de prétraitement, elle offre toujours une certaine protection.

résumé

AddCslashes () est une fonction PHP très puissante qui nous fournit des moyens flexibles d'échapper aux caractères spécifiques dans une chaîne. Contrairement à ADDSLASHES () , AddCSlashes () nous permet de spécifier des caractères spécifiques qui doivent être échappés, contrôlant ainsi mieux le processus d'échappement des chaînes. Que ce soit dans des scénarios tels que d'éviter les évasions répétées, le traitement des expressions régulières ou la prévention de l'injection de SQL, AddCslashes () peut jouer un rôle important.

La compréhension et l'utilisation correctement de cette fonction contribueront à améliorer l'efficacité et la sécurité de votre traitement des chaînes dans la programmation PHP.