我是一名业余的php程序员,自从我上次编写代码以来已经有一段时间了。现在,我正在使用php生成一些HTML内容。我很惊讶地看到这个PHP做了一些自动转义。这是正常的行为吗?我记得在我不能先将变量嵌入到文本而不首先转义之前。
$my_variable = 1;
echo "I'm outputting some text and $my_variable gets value: ".$my_variable."<br>";
这实际上输出: 我正在输出一些文本,1个获取值:1 \ŋ
它是否应该像这样工作,如果它应该,是否可以让变量从字符串“自动转义”?
答案 0 :(得分:2)
变量以双引号字符串展开。为了防止这种情况,您可以通过在其前面添加反斜杠来转义$符号:
echo "I'm outputting some text and \$my_variable gets value: ".$my_variable."<br>";
或者,如果您想要使用自动扩展:
echo "I'm outputting some text and \$my_variable gets value: $my_variable<br>";
请注意,不仅会扩展变量,还会扩展特殊字符转义,例如\"
(双引号),\n
(换行符)和\t
(制表符)。
或者,使用单引号字符串。在单引号字符串中,没有任何内容被扩展。您需要在单引号字符串中转义的唯一字符是'
和\
。
echo 'I\'m outputting some text and $my_variable gets value: '.$my_variable.'<br>';
有关单引号和双引号字符串(以及其他可用字符串类型)之间差异的更多详细信息,请参阅此处的PHP文档: http://php.net/manual/en/language.types.string.php