Maison > développement back-end > tutoriel php > Utilisation des guillemets simples et doubles PHP

Utilisation des guillemets simples et doubles PHP

angryTom
Libérer: 2023-04-07 08:28:01
original
9779 Les gens l'ont consulté

Utilisation des guillemets simples et doubles PHP

En regardant de nombreux codes, parfois des guillemets simples ou des guillemets doubles sont utilisés pour contenir le contenu d'une chaîne. En fait, un résumé simple est que les variables entre guillemets doubles peuvent être analysées, et les guillemets simples le sont. chaînes absolues. Laissez-moi vous le présenter en détail ci-dessous.

Tutoriel recommandé : Tutoriel vidéo PHP

1. 🎜>

En PHP, la définition d'une chaîne peut utiliser des guillemets simples ou des guillemets doubles. Cependant, les mêmes guillemets simples ou doubles doivent être utilisés pour définir la chaîne. Par exemple, « Bonjour » et « Bonjour » sont des définitions de chaîne illégales. ​

Lors de la définition d'une chaîne, un seul type de guillemets est considéré comme délimiteur, à savoir le guillemet simple ou le guillemet double. Ainsi, si une chaîne commence par un guillemet double, seul le guillemet double est analysé par l'analyseur. De cette façon, vous pouvez inclure n’importe quel autre caractère, même des guillemets simples, dans la chaîne entre guillemets doubles. Les chaînes de guillemets suivantes sont légales :

$s = "I am a 'single quote string' inside a double quote string"; 
$s = 'I am a "double quote string" inside a single quote string'; 
$s = "I am a 'single quote string' inside a double quote string"; 
$s = 'I am a "double quote string" inside a single quote string';   
Copier après la connexion

et la chaîne "Pourquoi" ceci "ne fonctionne-t-il pas ?" Si vous souhaitez exprimer des guillemets doubles dans cette chaîne, vous pouvez utiliser le caractère d'échappement "" (barre oblique inverse) pour devenir "Pourquoi "cela" ne fonctionne-t-il pas ?"

2. Guillemets simples et doubles dans les variables de chaîne

PHP nous permet d'inclure directement des variables de chaîne dans des chaînes de guillemets doubles. a constaté que les résultats du traitement des deux chaînes ci-dessous sont les mêmes.

$full_name = $first_name . ' ' . $last_name; 
$full_name = "$first_name $last_name";  
Copier après la connexion

Les chaînes de guillemets simples et les chaînes de guillemets doubles sont traitées différemment en PHP. Le contenu d'une chaîne entre guillemets doubles peut être interprété et remplacé, tandis que le contenu d'une chaîne entre guillemets simples est toujours considéré comme des caractères ordinaires. Par exemple :

$foo = 2; 
echo "foo is $foo"; // 打印结果: foo is 2 
echo 'foo is $foo'; // 打印结果: foo is $foo 
echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行) 
echo 'foo is $foo\n'; // 打印结果: foo is $foo\n 
$foo = 2; 
echo "foo is $foo"; // 打印结果: foo is 2 
echo 'foo is $foo'; // 打印结果: foo is $foo 
echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行) 
echo 'foo is $foo\n'; // 打印结果: foo is $foo\n   
Copier après la connexion

Comme vous pouvez le constater, même la barre oblique inverse à l'intérieur d'une chaîne de guillemets simples perd sa signification étendue (sauf pour l'insertion d'une barre oblique inverse \ et l'insertion d'un guillemet simple '). Par conséquent, vous devez utiliser des guillemets doubles lorsque vous souhaitez effectuer une substitution de variable et inclure des séquences d'échappement telles que n (nouvelle ligne) dans une chaîne. Les chaînes de guillemets simples peuvent être utilisées n'importe où ailleurs. La vitesse de traitement de l'utilisation de chaînes de guillemets simples dans les scripts sera plus rapide, car l'analyseur PHP traite les chaînes de guillemets simples d'une manière relativement simple, tandis que le traitement des guillemets doubles doit également être analysé à l'intérieur du fichier. chaîne Elle est donc plus complexe et donc légèrement plus lente à traiter.

Certains problèmes peuvent survenir lors du référencement de combinaisons complexes de variables dans des chaînes. Le code suivant fonctionnera normalement :

echo "value = $foo"; 
echo "value = $a[$i]"; 
echo "value = $foo"; 
echo "value = $a[$i]";   
Copier après la connexion

Mais le code suivant n'obtiendra pas les résultats souhaités :

echo "value = $a[$i][$j]"; //我们希望打印二维数组$a的某个元素。   
Copier après la connexion
<. 🎜>Pour éviter ces problèmes potentiels lors de l'utilisation des chaînes, nous séparons généralement les variables complexes des chaînes, comme ceci :

echo &#39;value = &#39; . $a[$i][$j];//字符串的连接用点(.)
Copier après la connexion

Une autre façon consiste à séparer les variables complexes entre des accolades, l'analyseur de syntaxe le reconnaîtra correctement :

echo "value = {$a[$i][$j]}" //打印二维数组$a的某个元素   
Copier après la connexion

3. Dans les instructions SQL C'est souvent le cas Le problème rencontré est que l'instruction SQL insérée dans la base de données utilise des guillemets simples pour définir la chaîne Si une chaîne contenant des guillemets simples est insérée dans la base de données, l'instruction SQL tournera mal.

Tels que :

$sql="insert into userinfo (username,password) Values(&#39;O&#39;Kefee&#39;,&#39;123456&#39;)"  
Copier après la connexion

À l'heure actuelle, l'une des méthodes de traitement consiste à ajouter la barre oblique inverse du caractère d'échappement dans l'instruction SQL,

c'est-à-dire :...

, ……  

Values(&#39;O&#39;Kefee&#39;  Bien entendu, vous pouvez également utiliser la fonction addlashes(). La fonction de cette fonction est d'ajouter des caractères d'échappement,

, c'est-à-dire :

$s = addslashes("O&#39;Kefee") ……Values(&#39;".$s."&#39;,……   
Copier après la connexion
<. 🎜> Une autre façon consiste à définir php. L'option magic-quotes dans ini, si cette option est activée, s'il y a des guillemets simples dans les informations soumises via le formulaire, des caractères d'échappement seront automatiquement ajoutés. Il n’est donc pas nécessaire d’utiliser d’autres fonctions.

Supplément : Cela commence par le rôle des guillemets doubles et des guillemets simples : les champs entre guillemets doubles seront interprétés par le compilateur puis affichés sous forme de code HTML, mais les champs entre guillemets simples n'ont pas besoin d'être interprétés , directement en sortie.

Par exemple :

$abc=&#39;I love u&#39;; 
echo $abc //结果是:I love u 
echo &#39;$abc&#39; //结果是:$abc 
echo "$abc" //结果是:I love u
Copier après la connexion

Par conséquent, lors de l'attribution de valeurs aux instructions SQL dans la base de données, elles doivent également être utilisées entre guillemets doubles SQL="select a,b,c from.. ." Mais l'instruction SQL Il y aura des guillemets simples pour citer le nom du champ

Par exemple :

select * from table where user=&#39;abc&#39;;
Copier après la connexion

L'instruction SQL ici peut être écrite directement comme

Mais si c'est comme ceci SQL="select * from table where user=&#39;abc&#39;"

$user=&#39;abc&#39;; 
SQL1="select * from table where user=&#39; ".$user." &#39; ";对比一下 
SQL2="select * from table where user=&#39; abc &#39; "
Copier après la connexion

J'ai ajouté un peu plus d'espace entre les guillemets simples et les guillemets doubles, j'espère que vous y verrez plus clairement.

C'est-à-dire remplacer 'abc' par '".$user."' le tout entre un seul guillemet. Divisez simplement toute la chaîne SQL. SQL1 peut être décomposé en 3 parties suivantes

1 : "select * from tablewhere user=' "

2 : $user

3 : " ' "

Utilisez . pour connecter des chaînes afin que vous puissiez comprendre.

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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal