


Ma?triser les littéraux de cha?nes: les nuances des séquences d'évasion PHP
Aug 01, 2025 am 07:38 AMLes doubles citations interprètent les évasions et les variables, les citations simples gardent les choses littérales; Utilisez des cha?nes à double qualité pour le contenu dynamique avec des variables et des séquences d'échappement comme \ n ou $, utilisez un seul quadrillage pour éviter l'analyse involontaire, appliquez Heredoc pour les cha?nes interpolées multi-lignes et NowDoc pour les littéraux multi-lignes, et échappent toujours correctement à des dossiers de fichiers ou à utiliser Directory_separator pour éviter les erreurs.
Lorsque vous travaillez avec des littéraux de cha?nes dans PHP, la compréhension des séquences d'échappement est essentielle, en particulier lors de la gestion du contenu dynamique, des chemins de fichier ou du formatage de sortie. Bien que la manipulation des évasions par PHP puisse sembler simple au début, des différences subtiles entre les cordes à quotté et à double qualité peuvent trébucher même des développeurs expérimentés.

Cordons à double trempage: là où s'échapper est importante
En PHP, les cha?nes à double quz interprètent les séquences d'évasion. Cela signifie que certaines combinaisons de caractères commen?ant par une barre oblique inverse ( \
) sont traitées et remplacées par des valeurs spéciales.
Les séquences d'échappement courantes dans les cha?nes à double cité comprennent:

-
\"
- Insère une double citation littérale -
\$
- Empêche l'interpolation variable (utile si vous avez besoin d'un$
littéral) -
\\
- insère une seule barre oblique inverse -
\n
- Newline -
\r
- retour en voiture -
\t
- onglet -
\v
- Onglet vertical -
\e
- caractère d'échappement (ASCII 27) -
\0
à\377
- codes de caractères octaux -
\x00
à\xFF
- codes de caractères hexadécimaux -
\u{0000}
à\u{10FFFF}
- Unicode CodePoints (si activé)
Par exemple:
echo "Hello \ Tworld \ n"; // Sorties: Hello World // (sur une nouvelle ligne)
Ce comportement rend les cha?nes à double qualité puissantes pour le formatage, mais signifie également que vous devez être prudent lorsque vous ne voulez pas d'interprétation, comme lors de la rédaction de chemins de fichier Windows ou de modèles regex.

Cordons à un seul point: échappement minimal
Les cordes à un seul point sont plus littérales. La plupart des séquences d'échappement sont ignorées. Les deux seules exceptions sont:
-
\\
- devient une barre de barre littérale -
\'
- devient une citation unique littérale
Tout le reste est traité comme un texte brut:
echo 'hello \ nworld'; // Sorties: Hello \ nworld
Aucune nouvelle ligne n'est insérée. Cela rend les cha?nes à un seul QUIodes idéales lorsque vous souhaitez éviter une interprétation involontaire ou des frais généraux de performance de l'analyse.
Donc, si vous incorporez HTML ou JavaScript qui contient de nombreux cotations $
ou \
, aidez à éviter l'encombrement de barreaux réformes.
Heredoc et NowDoc: flexibilité de cordes prolongée
Pour les cordes multi-lignes, PHP propose heredoc
et nowdoc
.
- Heredoc se comporte comme des cordes à double cité (les variables et les évasions sont traitées).
- NOWDOC se comporte comme des cha?nes à quotté unique (pas d'interprétation).
Exemple:
$ name = "Alice"; echo <<< eot Bonjour $ name \ n Comment vas-tu? Eot; // Sortie: Bonjour Alice \ n // Comment vas-tu?
Attendez - note \n
n'est pas devenu une nouvelle ligne? C'est parce que par défaut, Heredoc fait analyser les séquences d'évasion, mais seulement si elles sont valides. Dans ce cas, \n
est valide, mais selon le contexte (comme s'il est suivi d'un chiffre), il peut être interprété ou non. Pour assurer une réelle nouvelle ligne, utilisez une pause de ligne réelle ou PHP_EOL
.
Meilleur exemple avec une nouvelle ligne explicite:
echo <<< eot Bonjour $ nom Comment vas-tu? Eot;
NOWDOC évite entièrement cela:
echo <<< 'eot' Bonjour $ name \ n Aucune variable ou échappe ici. Eot;
Cela stimule la cha?ne exactement comme écrit.
Conseils pratiques et pièges communs
- Utilisez des devis uniques lorsque vous n'avez pas besoin de variables ou d'évasions - c'est légèrement plus rapide et plus propre.
- Escape
$
en cordes à double triché si vous voulez un signe du dollar littéral:"The cost is \$10"
- Attention à la confusion octale :
"\40"
est un espace (octal 40), mais"\8"
ou"\9"
devient juste"8"
ou"9"
car 8 et 9 ne sont pas des chiffres octaux valides. PHP laisse en silence les séquences octales non valides. - Unicode s'échappe nécessite l'indicateur
u
dans certains contextes (comme les fonctionspreg
), mais dans les cha?nes,\u{...}
ne fonctionne que dans le double triché ou Heredoc si la prise en charge Unicode est activée (par défaut en php moderne). - Breflashs dans les chemins de fichier : sur Windows, utilisez des barres baisses en avant
/
ou double backslashs\\
dans des cha?nes à double quz. Ou mieux - utilisezDIRECTORY_SEPARATOR
ourealpath()
pour éviter les problèmes.
Fondamentalement, rappelez-vous:
Citations doubles → Interpréter les évasions et les variables.
Citations simples → Presque tout est littéral.
Ce n'est pas complexe, mais le faire mal conduit à des bogues difficiles à repérer, comme les citations manquantes dans les attributs HTML ou la sortie JSON cassée.
Alors choisissez à bon escient vos citations.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

preg_quote () EscapesRegex-SpecialCharacters, y compris BackslashesandTheDelimiter, totrareathemasliterals; 2.AvoidDouble-EscapingByPassingRawstrings (par exemple, ?c: \ Path?) Sanspre-escapedbackslasheshes;.

Heredoc gère les séquences d'interpolation variable et d'évasion de base telles que \ n, \ t, \\, \ $, mais ne traite pas \ "ou \ ', tandis que NowDoc n'effectue pas des variables d'interpolation et de tout traitement d'évasion. Tous les contenus, y compris \ n et les variables, sont devenues littéralement; 1. Les variables telles que le nom $ seront remplacées comme indique comme indique comme des nouvelles; 3. Aucune citation d'évasion n'est requise pour les deux;

INBASH, SOMIQUOTESTERATALLCHARACTERSLITERALLEMENT WHILEDUBLEQUOTESALOWVARIABLE EXPANSIONANDLIMITéE

Toujours EscapeOutputUsingContext-SpecificMethods: htmlSpecialCars () forhtmlContentAndAtTributes, rawurlencode () forurls, andjson_en code () withjson_hex_tag, json_hex_apos, json_hex_quot, etjson_unescaped_unicodeforjavascrip

TomasterbackslashesInphpregex, Comprendre les émeutes de PARSIGNOCCUR: PhprocesseSESCACESEENCESFIRST, ThentheregexEnginedoes; 2.UsesingslequotesForregexpatternStoAvoidPhpinterpretingsapeslike \ BASBABOTSPACE; 3.Indoubleque, doubléthebackslasslashes (.

AddSlashes () doit être évité pour les évasions SQL car il n'est pas s?r et non protégé de l'injection SQL; htmlSpecialChars () est utilisé pour la sortie HTML pour empêcher les attaques XSS; MySQLI_REAL_ESCACE_STRING () peut être utilisé pour les échappements de cha?nes dans les requêtes MySQL, mais n'est qu'une option sous-optimale lorsque les instructions de prétraitement ne peuvent pas être utilisées. 1. AddSlashes () est obsolète et dangereux et ne doit pas être utilisé pour l'évasion SQL dans les applications modernes; 2. HtmlSpecialCars () doit être utilisé lors de la sortie de l'entrée de l'utilisateur et de la sortie en HTML pour empêcher les XS; 3. Mysqli_real_escape_string (

La protection contre l'injection SQL ne peut pas compter sur Addslashes () car elle ne traite pas le codage multi-octets et échappe uniquement aux caractères finis, qui est facilement contourné; Les instructions de prétraitement (telles que les requêtes paramétrées pour PDO ou MySQLI) doivent être utilisées pour séparer les données de la logique SQL pour s'assurer que l'entrée n'est pas analysée en code; Si le prétraitement ne peut pas être utilisé, les fonctions d'échappement spécifiques à la base de données (telles que Real_escape_String et définition du jeu de caractères correct), l'identifiant de la liste blanche ou de la marque de devis, le casting d'entrée entier et d'autres méthodes doivent être utilisés en fonction du contexte pour atteindre la défense hiérarchique.

BackslashesgomissingInphpBecausetheyareTreatEdascaptectersInDouble-QuotedStrings, Sotofixthis: 1.usesingschingquotesforliteralPathsliL'c: \ Users \ John \ Documents ', 2.ordoublethebackSlashesSindoublequotesas "C: \\ use
