PHP signe de dollar dans les chaînes
Je n'ai pas unserstand pourquoi le PHP n'est pas de faire des remplacements de chaînes de caractères contenant des signes dollar.
Regardez l'exemple suivant:
<?php
error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
$var = 1024;
$str = '$var';
echo $str, '<br>', "$str";
De sortie est $var $var. Pourquoi est-il si? Tout est clair avec les premières echo
paramètre, mais je m'y attendais le dernier paramètre donnera un résultat différent (1024), car il contient le signe du dollar encapsulé par des guillemets, de sorte qu'il doit être interprété comme une variable et remplacé à 1024. Où vais-je tort?
- avez-vous regardé php.net/manual/en/language.types.string.php avant de poser la question?
- Assurez-vous. Quand une chaîne de caractères est spécifié dans le devis double ou avec heredoc, les variables sont analysées en son sein. J'ai pensé que $str contenu doit être interprété comme une variable.
- oui. il a été interprété comme
$str
qui tient la corde'$var'
. - Je voulais juste préciser que ce n'est pas parce que, par exemple, les paramètres de configuration, en s'échappant des signes dollar dans de telles conditions.
- non, c'est le comportement attendu.
- Je pense que c'était un malentendu. Par des "guillemets" le manuel signifie "guillemets", pas une chaîne de caractères délimitée par (deux) 'apostrophes'. Le manuel de la langue pourrait être plus clair... ", du type indiqué"; d'autres langages utilisent différents devis pour des discours de tous les jours.
Vous devez vous connecter pour publier un commentaire.
$str
contient une chaîne de caractères avec le contenu de"$var"
(pas de variable de remplacement, juste ces caractères). Il a été créé à l'aide de guillemets simples, donc pas de remplacement de variable y.Quand il écho à l'aide de
echo "$str"
, la variable$str
sera remplacé par son contenu, à savoir la chaîne"$var"
, résultant ainsi dans votre sortie.La chaîne de remplacement des guillemets, les chaînes ne fonctionne pas de manière récursive! Afin d'avoir
$str
remplacé par1024
dans la deuxième apparition, vous devez créer$str
à l'aide de guillemets dans la première place."pas\$word"
."
vous permet de passer des variables à l'intérieur de la chaîne.'
prend tout à l'intérieur, juste comme une chaîne de caractères.Alors, si vous ne
'$var'
- il de la chaîne avec$
à l'intérieur."$str"
prend$str
valeur, de sorte qu'il imprime$var
$str contient la chaîne de caractères $var, qui ne sera pas interprété jamais, depuis qu'il est entre des guillemets simples.
De l'interpréter, vous avez besoin de la fonction eval()
sortie 1042
eval
estevil
Voulez-vous dire cela?
De sortie -
1024
1024
hehe