Les chaînes PHP peuvent être spécifiées non seulement de deux manières, mais de quatre manières.
- Les chaînes entre guillemets simples afficheront les choses presque complètement «telles quelles». Les variables et la plupart des séquences d'échappement ne seront pas interprétées. L'exception est que pour afficher un guillemet simple littéral
\'
, vous pouvez l'échapper avec une barre oblique inverse, et pour afficher une barre oblique inverse, vous pouvez l'échapper avec une autre barre oblique inverse\\
( donc oui, même les chaînes entre guillemets simples sont analysées ).
- Les chaînes de guillemets doubles afficheront une multitude de caractères d'échappement (y compris certaines expressions rationnelles), et les variables dans les chaînes seront évaluées. Un point important ici est que vous pouvez utiliser des accolades pour isoler le nom de la variable que vous souhaitez évaluer . Par exemple, disons que vous avez la variable
$type
et que vous le souhaitezecho "The $types are"
. Cela recherchera la variable$types
. Pour contourner cette utilisationecho "The {$type}s are"
Vous pouvez placer l'accolade gauche avant ou après le signe dollar. Jetez un œil à l' analyse des chaînes pour voir comment utiliser les variables de tableau et autres.
- La syntaxe des chaînes Heredoc fonctionne comme des chaînes entre guillemets doubles. Ça commence par
<<<
. Après cet opérateur, un identifiant est fourni, puis une nouvelle ligne. La chaîne elle-même suit, puis à nouveau le même identifiant pour fermer la citation. Vous n'avez pas besoin d'échapper aux guillemets dans cette syntaxe.
- La syntaxe de chaîne Nowdoc (depuis PHP 5.3.0) fonctionne essentiellement comme des chaînes entre guillemets simples. La différence est que même les guillemets simples ou les barres obliques inverses ne doivent pas être échappés. Un nowdoc est identifié avec la même
<<<
séquence que celle utilisée pour les heredocs, mais l'identifiant qui suit est placé entre guillemets simples, par exemple<<<'EOT'
. Aucune analyse n'est effectuée dans nowdoc.
Remarques:
Les guillemets simples à l'intérieur des guillemets simples et les guillemets doubles à l'intérieur des guillemets doubles doivent être échappés:
$string = 'He said "What\'s up?"';
$string = "He said \"What's up?\"";
Vitesse:
je ne mettrais pas trop de poids sur les guillemets simples étant plus rapides que les guillemets doubles. Ils sont probablement plus rapides dans certaines situations. Voici un article expliquant une manière dont les guillemets simples et doubles sont essentiellement aussi rapides depuis PHP 4.3 ( Useless Optimizations
vers le bas, section C
). En outre, cette page de benchmarks propose une comparaison de devis simple vs double. La plupart des comparaisons sont les mêmes. Il existe une comparaison où les guillemets doubles sont plus lents que les guillemets simples.
${variablename}
.\n
, tout le reste de monPHP
code est entre guillemets simples."
guillemets doubles est tout sauf une chose du passé. Les mises à jour ont augmenté le traitement des guillemets doubles pour être aussi rapide, dans presque tous les cas extrêmes, de nos jours.Les choses sont évaluées entre guillemets doubles mais pas en guillemets simples:
la source
$mailbody = 'I want a line break:\nDone.';
garder le\n
vivant. Attendu que:$mailbody = "I want a line break:\nDone.";
analysera le saut de ligne.$testWithAsciiAndUtf8Characters = "\x48\x41\x4c\114\117 \u{0147}\u{012B}\u{0144}\u{014D}!";
$simpleTest = '\x48\x41\x4c\114\117 \u{0147}\u{012B}\u{0144}\u{014D}!';
séquences de caractères dans$testWithAsciiAndUtf8Characters
ont été transformées en chaîne avec de vraies lettres.'
Devis simpleLa façon la plus simple de spécifier une chaîne est de la placer entre guillemets simples. Les guillemets simples sont généralement plus rapides et tout ce qui est cité à l'intérieur est traité comme une chaîne simple.
Exemple:
"
Devis doubleUtilisez des guillemets doubles en PHP pour éviter d'avoir à utiliser le point pour séparer le code (Remarque: utilisez des accolades
{}
pour inclure des variables si vous ne souhaitez pas utiliser l'.
opérateur concaténation ( )) dans la chaîne.Exemple:
Y a-t-il un avantage de performance entre guillemets simples et guillemets doubles en PHP?
Oui. Il est légèrement plus rapide d'utiliser des guillemets simples.
PHP n'utilisera pas de traitement supplémentaire pour interpréter ce qui se trouve à l'intérieur du guillemet simple. lorsque vous utilisez des guillemets doubles, PHP doit analyser pour vérifier s'il y a des variables dans la chaîne.
la source
\'
pour échapper à une apostrophe unique à utiliser dans la chaîne (ou\\'
pour afficher la barre oblique inverse). Notez que les séquences d'échappement traditionnelles, telles que celles\n
qui ne seront PAS analysées avec le caractère de nouvelle ligne.Une chaîne entre guillemets simples ne contient pas de variables interprétées. Une chaîne entre guillemets le fait.
En outre, une chaîne entre guillemets doubles peut contenir des apostrophes sans barres obliques inverses, tandis qu'une chaîne entre guillemets simples peut contenir des guillemets non échappés.
Les chaînes entre guillemets simples sont plus rapides à l'exécution car elles n'ont pas besoin d'être analysées.
la source
En PHP, les deux
'my name'
et"my name"
sont des chaînes. Vous pouvez en savoir plus à ce sujet dans le manuel PHP .Ce que vous devez savoir sont
En PHP, les gens utilisent pour définir guillemet simple une chaîne constante, comme
'a'
,'my name'
,'abc xyz'
, tout en utilisant des guillemets doubles pour définir une chaîne identifiant contiennent comme"a $b $c $d"
.Et autre chose,
est plus rapide que
mais
est plus lent que
Cela est vrai pour les autres chaînes utilisées.
la source
Exemple de guillemets simple, double, heredoc et nowdoc
la source
En PHP, le texte de guillemet simple est considéré comme une valeur de chaîne et le texte de guillemet double analysera les variables en remplaçant et en traitant leur valeur.
Ici, les guillemets doubles analysent la valeur et les guillemets simples sont considérés comme des valeurs de chaîne (sans analyser la
$test
variable.)la source
Les deux types de caractères fermés sont des chaînes. Un type de devis est commodément utilisé pour joindre l'autre type de devis.
"'"
et'"'
. La plus grande différence entre les types de guillemets réside dans le fait que les références d'identificateur incluses sont substituées aux guillemets doubles internes, mais pas dans les guillemets simples.la source
La différence entre l'utilisation de guillemets simples et de guillemets doubles en php est que si nous utilisons des guillemets simples dans l'instruction echo, cela est traité comme une chaîne. ... mais si nous saisissons le nom de la variable entre guillemets, la valeur de cette variable sera sortie avec la chaîne.
la source
Voici quelques possibilités de guillemets simples et doubles avec variable
la source
Une chose:
Il est très important de noter que la ligne avec l'identifiant de fermeture de Heredoc ne doit contenir aucun autre caractère, sauf un point - virgule (;) . Cela signifie en particulier que l'identifiant peut ne pas être en retrait et qu'il ne peut y avoir aucun espace ou tabulation avant ou après le point-virgule.
Exemple:
la source
Je suis peut-être un peu en retard, et un peu hors sujet, mais le voici quand même:
Vous n'avez pas nécessairement à choisir en raison du contenu de votre chaîne entre:
alert("It's \"game\" time.");
oualert('It\'s "game" time.');
Si vous connaissez l'utilisation des guillemets anglais et le caractère correct pour l'apostrophe, vous pouvez utiliser des guillemets doubles ou simples, car cela n'aura plus d'importance:
alert("It’s “game” time.");
etalert('It’s “game” time.');
la source