Guillemets doubles en php. Quelle est la différence entre les chaînes entre guillemets simples et doubles en PHP ? Php échappant aux guillemets

Ce court article montre comment et où utiliser citations en PHP.

Guillemets simples (apostrophes) en PHP

Les chaînes placées entre guillemets simples ne sont en aucun cas traitées par PHP. Autrement dit, les guillemets simples représentent le texte placé entre eux tel quel.

// Corriger l'écho "Comment va la vie ?"; echo "Comment va la vie ? $name"; echo "Comment va la vie ?".$name; // Echo incorrect "Comment vas-tu ? $name";

Caractères spéciaux entre guillemets simples et doubles

Pour garantir que, par exemple, le caractère de tabulation (\t) est interprété comme un caractère de tabulation plutôt que comme une barre oblique et la lettre t, vous devez placer la ligne de texte contenant le caractère de tabulation entre guillemets doubles. Vous ne pouvez utiliser \' et \\ qu'entre guillemets simples. Toutes les autres séquences d'échappement (\n, \r, \$, etc.) ne sont pas autorisées entre guillemets simples.

// Echo incorrect "Comment vas-tu ?\n"; // Correction de l'écho "Comment vas-tu ?\n";

Pour échapper aux guillemets doubles dans une chaîne, placez les guillemets avant la barre oblique inverse \" .

// Écho incorrect "

Quoi de neuf?

"; // Corriger l'écho "

Quoi de neuf?

"; écho "

Quoi de neuf?

";

Guillemets doubles en PHP

Le texte placé entre guillemets est traité très différemment. Par exemple, les variables placées entre guillemets doubles sont remplacées par leurs valeurs. Cela facilite la compilation Requêtes SQL en utilisant des guillemets doubles.

$query = "INSERT INTO table (post,author,text,date) VALUES ("$id","$author","$text","$date"");

Quel type de guillemets dois-je utiliser pour formater des chaînes : apostrophes ou guillemets classiques ?

Examinons la différence entre les guillemets doubles et simples en PHP et utilisons des exemples pour savoir quand les utiliser.

Variables et séquences d'échappement pour caractères spéciaux, apparaissant dans des chaînes entourées de guillemets simples ne sont pas traités. Les chaînes entourées d'apostrophes sont traitées beaucoup plus rapidement par l'interpréteur PHP que les chaînes similaires entourées de guillemets doubles.

La raison ici est simple : l'interpréteur PHP vérifie en outre les chaînes entre guillemets doubles pour la présence de variables, et si elles sont trouvées, alors au lieu du nom de la variable, sa valeur est insérée dans la chaîne. Mais une ligne entourée d'apostrophes est perçue par l'interprète comme du texte normal et PHP n'effectue aucune transformation dans ces lignes. Je pense qu'il est clair que le traitement des chaînes entre guillemets simples sera de toute façon plus rapide.

Tout d'abord, décrivons comment définir une chaîne, puis vérifions à quel point le traitement des chaînes entre guillemets simples sera plus rapide.

La manière la plus simple de définir une chaîne est de la mettre entre guillemets simples ("). Pour utiliser des guillemets simples dans une chaîne entre guillemets simples, ils doivent être précédés d'une barre oblique inverse (\), c'est-à-dire échappée. Si la barre oblique inverse doit venir avant un guillemet simple ou à la fin de la ligne, vous devez le dupliquer. Si vous essayez d'échapper un autre caractère, la barre oblique inverse sera également imprimée.

Voici un exemple d'utilisation de guillemets simples :
// Sortie : chaîne simple
echo "Chaîne simple" ;
// Tirages : je suis là
echo "Je suis là" ;
// Sortie : Cela n'insérera pas : \n nouvelle ligne
echo "Cela n'insérera pas :\nnewline" ;
// Sorties : La variable $example ne sera pas non plus remplacée
echo "La variable $exemple ne sera pas non plus remplacée"; Si la chaîne est entourée de guillemets doubles ("), PHP reconnaît davantage de séquences d'échappement pour les caractères spéciaux et remplace également la valeur du nom de la variable dans la chaîne. Comme pour les guillemets simples, afin d'utiliser des guillemets doubles dans une chaîne entourée de guillemets doubles ("), PHP reconnaît davantage de séquences d'échappement pour les caractères spéciaux et remplace également la valeur du nom de la variable dans la chaîne. guillemets, ils doivent être précédés d’un caractère barre oblique inverse (\).

Voici un exemple d'utilisation de guillemets doubles :
// Sortie : chaîne simple
echo "Chaîne simple" ;
// Sorties : Société "Snowdrop"
echo "Société \"Perce-neige\"";
// Sortie : Cela mènera à une nouvelle ligne
echo "Cela passera à une nouvelle ligne \n";
// Sortie : La variable sera remplacée
$exemple = "sera remplacé" ;
echo "Variable $exemple"; Vous devez également vous rappeler que la séquence "\n" (nouvelle ligne), "\r" (retour chariot) concerne le texte brut, pas le HTML. Ainsi, vous ne verrez pas de changements dans le navigateur (uniquement dans code source pages).

Voyons à quel point les guillemets simples sont plus rapides que les guillemets doubles. Pour les mesures, nous rédigerons un court script de test, et nous constaterons immédiatement que si vous le testez vous-même, les résultats, qui dépendent du matériel de votre PC ou serveur, seront différents.
// Renvoie l'horodatage au début de la boucle
$start = microtime(true);
// Crée une boucle pour 1 million d'itérations
pour ($i = 0; $i< 1000000; $i++) {
$text = "Voici une chaîne de caractères";
}
// Calculer le temps passé
$time = (microtime(true) - $start); Résultat : 0,09 seconde.

Si on remplace les guillemets simples par des guillemets doubles :
$text = "Voici une chaîne de caractères"; Le résultat sera de 0,10 seconde.

Comme vous pouvez le constater, lors de l’utilisation de chaînes de texte, la différence de temps d’exécution est très faible, on pourrait même dire qu’elle n’existe pas du tout. Le plaisir commence lorsque nous essayons de combiner une chaîne et une variable.
$text = "Voici la chaîne de caractères $i"; ou
$text = $i."Voici une chaîne de caractères"; Résultat environ : 0,27 seconde.

La différence est assez notable. La concaténation et les guillemets doubles affectent clairement les performances lorsque des variables sont ajoutées à la chaîne.

Lorsque le serveur traite le code, il vérifie tout le contenu des guillemets doubles pour les variables, les constantes, etc. Ça prend du temps. Et le serveur traite ce qui se trouve entre les guillemets simples comme du texte prêt à l'emploi et ne se soucie pas de ce qu'il y a là. La différence entre les performances des guillemets simples et doubles est très faible, mais si vous développez un projet très chargé, quelques millisecondes économisées sont déjà une victoire.

Une chaîne en PHP est un ensemble de caractères de n'importe quelle longueur. Contrairement au C, les chaînes peuvent également contenir des caractères nuls, ce qui n'affectera en rien le programme. En d’autres termes, les chaînes peuvent être utilisées pour stocker des données binaires. La longueur de la chaîne n'est limitée que par la quantité de RAM libre.

En PHP, un caractère équivaut à un octet, ce qui signifie qu'il y a exactement 256 caractères différents possibles. Cela signifie également que PHP ne prend pas en charge Unicode natif. Une certaine prise en charge Unicode est fournie par les fonctions utf8_encode() Et utf8_decode() .

La chaîne peut être facilement traitée à l'aide de fonctions standard, et vous pouvez également accéder directement à n'importe lequel de ses caractères.

Un exemple simple de variable chaîne :

$une= "C'est juste du texte stocké dans une variable chaîne";
écho $a ; //Sorties "Ceci est juste du texte écrit dans une variable chaîne"
?>

Examinons maintenant en détail la syntaxe du type de données. chaîne.

Syntaxe du type chaîne

Une chaîne peut être définie de trois manières différentes.

La manière la plus simple de définir une chaîne est de la mettre entre guillemets simples (le caractère " ).

Pour utiliser un guillemet simple dans une chaîne, comme dans de nombreuses autres langues, il doit être précédé d'un caractère barre oblique inverse ( \ ), c'est-à-dire le filtrer. Si la barre oblique inverse doit être placée avant un guillemet simple ou à la fin de la ligne, vous devez la dupliquer. Notez que si vous essayez d'échapper à un autre caractère, la barre oblique inverse sera également imprimée ! Il n’est donc généralement pas nécessaire d’échapper à la barre oblique inverse elle-même.

Contrairement aux deux autres syntaxes, les variables et les séquences d'échappement pour les caractères spéciaux apparaissant dans les chaînes entourées de, Pas sont en cours de traitement.

Voici un exemple d'utilisation de guillemets simples :

écho "c'est une simple chaîne";

Écho "Vous pouvez également insérer dans des lignes
caractère de nouvelle ligne ainsi,
parce que c'est normal"
;

// Sortie : Arnold a dit un jour : "Je reviendrai"
écho "Un jour, Arnold a dit : 'Je reviendrai.'';

Écho "Avez-vous supprimé C:\\*.* ?";

// Sorties : avez-vous supprimé C:\*.* ?
echo "Avez-vous supprimé C:\*.* ?" ;

// Sortie : Cela n'insérera pas : \n nouvelle ligne
écho "Cela n'insérera pas :\nnewline";

// Sorties : les variables $expand et $either ne sont pas remplacées
écho "$expand et $soit les variables ne sont pas remplacées";
?>

Si la chaîne est entourée de guillemets doubles ( " ), PHP reconnaît davantage de séquences d'échappement pour les caractères spéciaux :

Tableau des séquences de contrôle :

Sous-séquence Signification
\n nouvelle ligne (LF ou 0x0A (10) en ASCII)
\r retour chariot (CR ou 0x0D (13) en ASCII)
\t tabulation horizontale (HT ou 0x09 (9) en ASCII)
\\ barre oblique inverse
\$ signe dollar
\" double citation
\{1,3} une séquence de caractères correspondant à une expression régulière, un caractère dans le système numérique octal
\x(1,2) séquence de caractères correspondant à une expression régulière, caractère dans le système de nombres hexadécimaux

Rappelons encore que si vous souhaitez mnémoniser un autre caractère, l'antislash sera également imprimé !

Une autre façon de définir des chaînes consiste à utiliser syntaxe hérdocienne ("<<< "). Après<<< необходимо указать идентификатор, затем идет строка, а потом этот же идентификатор, закрывающий вставку.

L'identifiant de fermeture doit commencer dans la première colonne de la ligne. De plus, l'identifiant doit suivre les mêmes règles de dénomination que toutes les autres balises PHP : contenir uniquement des caractères alphanumériques et un trait de soulignement, et doit commencer par un caractère autre qu'un chiffre ou un trait de soulignement.

Attention! Il est très important de noter que la ligne d'identification de fermeture ne contient aucun autre caractère, à l'exception peut-être d'un point-virgule ( ; ). Cela signifie que l'identifiant et qu'il ne peut y avoir d'espaces ou de tabulations avant ou après le point-virgule. Il est également important de comprendre que le premier caractère avant l'identifiant de fermeture doit être un caractère de nouvelle ligne tel que défini par votre système d'exploitation. Par exemple, sous Windows®, c'est \r.

Si cette règle n'est pas respectée et que l'identifiant de fermeture n'est pas "propre", l'identifiant de fermeture est considéré comme manquant et PHP continuera à le rechercher. Si dans ce cas l'identifiant de fermeture correct n'est jamais trouvé, cela provoquera une erreur de traitement avec le numéro de ligne en fin de script.

Hérédoc-text se comporte de la même manière qu'une chaîne entre guillemets doubles, sans les avoir. Cela signifie que vous n'avez pas besoin d'échapper aux guillemets dans Heredoc, mais vous pouvez toujours utiliser les séquences d'échappement ci-dessus. Les variables sont traitées, mais vous devez être aussi prudent lorsque vous utilisez des variables complexes dans Heredoc que lorsque vous travaillez avec des chaînes.

Exemple de définition d'une chaîne héréditaire :

$str =<<Exemple de ligne,
couvrant plusieurs lignes,
en utilisant la syntaxe hérdocienne.
NEM ;

/* Exemple plus complexe avec des variables. */
classe foo
{
var $foo ;
var $bar ;

Fonction foo()
{
$this -> foo = "Foo" ;
$this -> bar = array("Bar1" , "Bar2" , "Bar3" );
}
}

$foo = nouveau foo();
$name = "MonNom" ;

Écho<<Je m'appelle "$name". je tape $foo-> foo.
Maintenant je déduis
( $foo -> barre [ 1 ]) .
Cela devrait afficher une lettre majuscule « A » :
\x41
EOT ;
?>

Je ne suis pas un expert en programmation PHP, mais je ne comprends pas pourquoi je vois du code en PHP avec une chaîne entourée de guillemets simples et parfois doubles.

Je sais juste qu'en langage .NET ou C, si c'est entre guillemets simples, cela signifie que c'est un caractère et non une chaîne.

Solution

Ce que vous devriez savoir

$a = "nom" ; $b = "mon $a" ; == "mon nom" $c = "mon $a"; != "mon nom"

En PHP, les gens utilisent des guillemets simples pour définir une chaîne constante comme "a" , "my name" , "abc xyz" tout en utilisant des guillemets doubles pour définir une chaîne contenant un identifiant comme "a $b $c $d" .

Et une autre chose est

Faites écho à « mon nom » ;

plus rapide que

Faites écho à « mon nom » ;

Faites écho à "mon" . $une ;

plus lent que

Faites écho à "mon $a" ;

Cela est vrai pour les autres chaînes utilisées.

En PHP, le texte entre guillemets simples est traité comme une valeur de chaîne, tandis que le texte entre guillemets doubles analysera les variables en remplaçant et en traitant leur valeur.

$test = "variable" ; echo "Bonjour Monsieur $test"; // le résultat serait : Bonjour Monsieur variable echo "Bonjour Monsieur $test"; // le résultat serait : Bonjour Monsieur $test

Ici, le guillemet double analyse la valeur et le guillemet simple est traité comme une valeur de chaîne (sans analyser la variable $test.)

Les deux types de caractères imbriqués sont des chaînes. Il est pratique d’utiliser un type de citation pour conclure un autre type de citation. """ et """ . La plus grande différence entre les types de guillemets est que les références d'identifiant imbriquées sont remplacées entre guillemets doubles plutôt qu'entre guillemets simples.

Une chaîne est un ensemble de caractères. En PHP, un caractère équivaut à un octet, ce qui signifie qu'il y a exactement 256 caractères différents possibles. Cela signifie également que PHP n'a pas de support Unicode natif. Une certaine prise en charge Unicode est fournie par les fonctions utf8_encode() et utf8_decode().

Remarque : Il n'y a aucun problème si la chaîne est très grande. Il n'y a pratiquement aucune restriction sur la taille des chaînes imposée par PHP, il n'y a donc absolument aucune raison de s'inquiéter de leur longueur.

Syntaxe

    Une chaîne peut être définie de trois manières différentes.

Guillemets simples

La manière la plus simple de définir une chaîne est de la mettre entre guillemets simples (le caractère ").

Pour utiliser un guillemet simple à l'intérieur d'une chaîne, comme dans de nombreux autres langages, il doit être précédé d'une barre oblique inverse (\), c'est-à-dire échappé. Si la barre oblique inverse doit être placée avant un guillemet simple ou à la fin de la ligne, vous devez la dupliquer. Notez que si vous essayez d'échapper à un autre caractère, la barre oblique inverse sera également imprimée ! Il n’est donc généralement pas nécessaire d’échapper à la barre oblique inverse elle-même.

Remarque : En PHP 3, dans ce cas, un message de niveau E_NOTICE sera émis.

Remarque : Contrairement aux deux autres syntaxes, les variables et les séquences d'échappement des caractères spéciaux apparaissant dans les chaînes entre guillemets simples ne sont pas traitées.

Echo "c'est une simple chaîne" ; echo "Vous pouvez également insérer un caractère de nouvelle ligne dans les chaînes de cette façon, comme c'est normal"; // Sorties : Arnold a dit un jour : "Je "reviendrai" echo "Arnold a dit un jour : "Je" serai de retour "" ; // Sorties : avez-vous supprimé C:\*.* ? echo "Avez-vous supprimé C:\\*.* ?"; // Sorties : avez-vous supprimé C:\*.* ? echo "Avez-vous supprimé C:\*.* ?"; // Sorties : Cela n'insérera pas : \n une nouvelle ligne echo "Cela n'insérera pas : \n une nouvelle ligne"; // Sorties : les variables $expand et $soit ne sont pas remplacées echo "Les variables $expand et $soit ne sont pas substituées" ;

Double citation

Si la chaîne est entourée de guillemets doubles ("), PHP reconnaît davantage de séquences d'échappement pour les caractères spéciaux :

Tableau 11-1. Séquences d'échappement

Nous le répétons, si vous souhaitez mnémoniser un autre caractère, la barre oblique inverse sera également imprimée !

Mais la propriété la plus importante des chaînes entre guillemets est la gestion des variables. Voir plus de détails : traitement des chaînes.

Hérédoc

Une autre façon de définir des chaînes consiste à utiliser la syntaxe heredoc ("

L'identifiant de fermeture doit commencer dans la première colonne de la ligne. De plus, l'identifiant doit suivre les mêmes règles de dénomination que toutes les autres balises PHP : contenir uniquement des caractères alphanumériques et un trait de soulignement, et doit commencer par un caractère autre qu'un chiffre ou un trait de soulignement.

Attention

Il est très important de noter que la ligne d'identification de fermeture ne contient aucun autre caractère, hormis éventuellement un point-virgule (;). Cela signifie que l'identifiant ne doit pas être mis en retrait et qu'il ne peut y avoir d'espaces ou de tabulations avant ou après le point-virgule. Il est également important de comprendre que le premier caractère avant l'identifiant de fermeture doit être un caractère de nouvelle ligne tel que défini par votre système d'exploitation. Par exemple, sur Macintosh, il s'agit de \r.

Si cette règle n'est pas respectée et que l'identifiant de fermeture n'est pas "propre", l'identifiant de fermeture est considéré comme manquant et PHP continuera à le rechercher. Si dans ce cas l'identifiant de fermeture correct n'est jamais trouvé, cela provoquera une erreur de traitement avec le numéro de ligne en fin de script.

Le texte Heredoc se comporte de la même manière qu’une chaîne entre guillemets doubles, sans les avoir. Cela signifie que vous n'avez pas besoin d'échapper aux guillemets dans Heredoc, mais vous pouvez toujours utiliser les séquences d'échappement ci-dessus. Les variables sont traitées, mais vous devez être aussi prudent lorsque vous utilisez des variables complexes dans Heredoc que lorsque vous travaillez avec des chaînes.

Exemple 11-2. Exemple de définition de chaîne Heredoc

$str =<<foo = « Foo » ; $this->bar = array("Bar1", "Bar2", "Bar3"); ) ) $foo = nouveau foo(); $nom = "MonNom" ; écho<<foo. Maintenant, je sors ($foo->bar). Cela devrait afficher une lettre majuscule "A": \x41 EOT;

Remarque : le support Heredoc a été ajouté dans PHP 4.

Gestion des variables

Si une chaîne est définie entre guillemets doubles ou en utilisant heredoc, les variables qu'elle contient sont traitées.

Il existe deux types de syntaxe : simple et complexe. Une syntaxe simple est plus simple et plus pratique. Il vous permet de traiter une variable, une valeur de tableau ou une propriété d'objet.

La syntaxe complexe a été introduite dans PHP 4 et peut être reconnue par les accolades entourant l'expression.

Syntaxe simple

Si l'interpréteur rencontre un signe dollar ($), il récupère autant de caractères que possible pour former un nom de variable valide. Si vous souhaitez spécifier la fin d'un nom, placez le nom de la variable entre accolades.

$bière = "Heineken" ; echo "Le goût de la $bière est excellent"; // fonctionne, """ est un caractère invalide pour un nom de variable echo "Il a bu des $beers"; // ne fonctionne pas, "s" est un nom de variable valide echo "Il a bu des $(beer)s"; // works echo "Il a bu des ($beer)s"; // travaux

Un élément de tableau (array) ou une propriété d'un objet (object) peut être traité de la même manière. Dans les index de tableau, un crochet fermant (]) marque la fin de la définition de l’index. Les mêmes règles s'appliquent aux propriétés des objets et aux variables simples, bien qu'elles ne puissent pas être trompées comme elles le sont pour les variables.

// Ces exemples concernent spécifiquement l'utilisation de tableaux à l'intérieur de // chaînes. En dehors des chaînes, placez toujours les clés de chaîne de votre tableau // entre guillemets et ne les utilisez pas en dehors des chaînes (parenthèses). // Montrons toutes les erreurs error_reporting(E_ALL); $fruits = array("fraise" => "rouge", "banane" => "jaune"); // Fonctionne, mais notez que cela fonctionne différemment en dehors de la chaîne citée echo "Une banane vaut $fruits."; //Works echo "Une banane c'est ($fruits["banane"])."; // Fonctionne, mais PHP, comme décrit ci-dessous, recherche d'abord // la constante banane. echo "Une banane c'est ($fruits)."; // Ne fonctionne pas, utilisez des accolades. Cela entraînera une erreur de traitement. echo "Une banane, c'est $fruits["banane"]."; // Works echo "Une banane c'est " . $fruits["banane"] . "." ; // Works echo "Ce carré mesure $square->width mètres de large."; // Ne marche pas. Voir la syntaxe complexe pour la solution. echo "Ce carré mesure $square->width00 centimètres de large.";

Pour quelque chose de plus complexe, vous devez utiliser une syntaxe complexe.

Syntaxe complexe (bouclée)

On l'appelle complexe non pas parce qu'il est difficile à comprendre, mais parce qu'il permet l'utilisation d'expressions complexes.

En fait, vous pouvez inclure n'importe quelle valeur se trouvant dans l'espace de noms dans une ligne avec cette syntaxe. Vous écrivez simplement l’expression de la même manière que vous le feriez en dehors de la ligne, puis vous la placez entre ( et ). Puisque vous ne pouvez pas échapper à "(", cette syntaxe ne sera reconnue que lorsque $ suit immédiatement (. (Utilisez "(\$" ou "\($" pour échapper à "($"). Quelques exemples illustratifs :

// Montrons toutes les erreurs error_reporting(E_ALL); $génial = "fantastique" ; // Ne fonctionne pas, affichera : Ceci est (fantastique) echo "C'est ( $génial)" ; // Fonctionne, affichera : Ceci est fantastique echo "This is ($great)" ; echo "C'est $(super)"; // Works echo "Ce carré mesure ($carré->largeur)00 centimètres de large."; // Fonctionne echo "Cela fonctionne : ($arr)" ; // Ceci n'est pas valide pour la même raison que $foo n'est pas valide en dehors de la ligne //. En d'autres termes, cela fonctionnera toujours, mais comme PHP recherche d'abord la constante foo, il générera une erreur E_NOTICE (constante non définie). echo "C'est faux : ($arr)" ; // Travaux. Lorsque vous utilisez des tableaux multidimensionnels, utilisez toujours des accolades à l'intérieur des // chaînes echo "This works: ($arr["foo"])"; // Travaux. echo "Cela fonctionne : " . $arr["foo"]; echo "Vous pouvez même écrire ($obj->values->name)"; echo "Voici la valeur de la variable nommée $name : ($($name))";

Accéder et modifier un caractère dans une chaîne

Les caractères des chaînes peuvent être utilisés et modifiés en spécifiant leur décalage par rapport au début de la chaîne, en commençant à zéro, entre accolades après la chaîne.

Remarque : Pour des raisons de compatibilité ascendante, vous avez toujours la possibilité d'utiliser des crochets de tableau aux mêmes fins. Cependant, à partir de PHP 4, cette syntaxe est obsolète.

Exemple 11-3. Quelques exemples de chaînes

// Récupère le premier caractère de la chaîne $str = "Ceci est un test."; $premier = $str(0); // Récupère le troisième caractère de la chaîne $third = $str(2); // Récupère le dernier caractère de la chaîne $str = "Ceci est encore un test."; $last = $str(strlen($str)-1); // Change le dernier caractère de la ligne $str = "Regarde la mer"; $str(strlen($str)-1) = "moi";

Fonctions et opérateurs utiles

Les chaînes peuvent être concaténées à l'aide de l'opérateur "." (point). Veuillez noter que l'opérateur d'addition "+" ne fonctionne pas ici. Pour plus d’informations, consultez Opérateurs de chaîne.

Il existe de nombreuses fonctions utiles pour modifier les chaînes.

Les principales fonctions sont décrites dans la section sur les fonctions de chaînes, les fonctions d'expression régulière pour la recherche avancée et le remplacement (en deux parties : Perl et POSIX avancé).

Il existe également des fonctions pour les chaînes d'URL et des fonctions pour crypter/déchiffrer les chaînes (mcrypt et mhash).

Enfin, si vous n'avez toujours pas trouvé votre bonheur, consultez également les fonctions de type de caractère.

Convertir en chaîne

Vous pouvez convertir une valeur en chaîne à l'aide d'un cast (string) ou de la fonction strval(). Dans les expressions où une chaîne est requise, la conversion se produit automatiquement. Cela se produit lorsque vous utilisez les fonctions echo() ou print(), ou lorsque vous comparez la valeur d'une variable à une chaîne. La lecture des sections Types et Manipulation de type du manuel rendra ce qui suit plus clair. Voir aussi settype().

La valeur booléenne TRUE est convertie en chaîne « 1 » et la valeur FALSE est représentée par « » (la chaîne vide). De cette façon, vous pouvez convertir des valeurs dans les deux sens - du booléen à la chaîne et vice versa.

Un entier ou un flottant est converti en chaîne, représentée par un nombre composé de ses chiffres (y compris l'exposant pour les nombres à virgule flottante).

Les tableaux sont toujours convertis en chaîne "Array", vous ne pouvez donc pas afficher le contenu d'un tableau en utilisant echo() ou print() pour voir ce qu'il contient. Pour afficher un seul élément, vous devez faire quelque chose comme echo $arr["foo"]. Voir ci-dessous pour obtenir des conseils sur la façon d'afficher/afficher tout le contenu.

Les objets sont toujours convertis en chaîne "Object". Si vous souhaitez imprimer la valeur d'une variable membre d'un objet à des fins de débogage, lisez les paragraphes suivants. Si vous souhaitez obtenir le nom de classe de l'objet requis, utilisez get_class() .

Les ressources sont toujours converties en chaînes avec la structure "Resource id #1", où 1 est le numéro de ressource unique qui lui est attribué par PHP au moment de l'exécution. Si vous souhaitez obtenir le type de ressource, utilisez .

NULL est toujours converti en chaîne vide.

Comme vous pouvez le voir ci-dessus, la sortie de tableaux, d'objets ou de ressources ne vous donne aucune information utile sur les valeurs elles-mêmes. Une meilleure façon d'imprimer les valeurs pour le débogage consiste à utiliser les fonctions print_r() et var_dump().

Vous pouvez également convertir les valeurs PHP en chaînes pour un stockage persistant. Cette méthode est appelée sérialisation et peut être effectuée à l’aide de la fonction serialize(). De plus, si votre installation PHP prend en charge WDDX, vous pouvez sérialiser les valeurs PHP dans des structures XML.

Conversion de chaînes en nombres

Si la chaîne est reconnue comme une valeur numérique, la valeur et le type résultants sont déterminés comme suit.

Une chaîne sera reconnue comme un flottant si elle contient l'un des caractères ".", "e" ou "E". Sinon, il sera défini comme un entier.

La valeur est déterminée par le début de la chaîne. Si la ligne commence par une valeur numérique valide, cette valeur sera utilisée. Sinon la valeur sera 0 (zéro). Une valeur numérique valide est constituée d'un ou plusieurs chiffres (pouvant contenir un point décimal), éventuellement précédés d'un signe, suivis d'un exposant facultatif. L'exposant est "e" ou "E" suivi d'un ou plusieurs chiffres.

$foo = 1 + "10,5" ; // $foo est un float (11.5) $foo = 1 + "-1.3e3"; // $foo est un float (-1299) $foo = 1 + "bob-1.3e3"; // $foo est un entier (1) $foo = 1 + "bob3" ; // $foo est un entier (1) $foo = 1 + "10 petits cochons" ; // $foo est un entier (11) $foo = 4 + "10.2 Little Piggies" ; // $foo est un float (14.2) $foo = "10.0 pigs " + 1; // $foo est float (11) $foo = "10.0 cochons " + 1.0; // $foo est flottant (11)

Pour plus d'informations sur cette conversion, consultez la section sur strtod(3) dans la documentation Unix.

Si vous souhaitez tester l'un des exemples de cette section, vous pouvez le copier-coller ainsi que la ligne suivante pour voir ce qui se passe :

Faites écho "\$foo==$foo; tapez : " . gettype($foo) . "
\n";

Ne vous attendez pas à obtenir le code d'un caractère en le convertissant en entier (comme vous pourriez le faire en C par exemple). Pour convertir les caractères en leurs codes et inversement, utilisez ord() et




Haut