变量"自动转义"从一个字符串?

时间:2014-08-11 14:59:03

标签: php string variables escaping

我是一名业余的php程序员,自从我上次编写代码以来已经有一段时间了。现在,我正在使用php生成一些HTML内容。我很惊讶地看到这个PHP做了一些自动转义。这是正常的行为吗?我记得在我不能先将变量嵌入到文本而不首先转义之前。

$my_variable = 1;
echo "I'm outputting some text and $my_variable gets value: ".$my_variable."<br>";

这实际上输出:     我正在输出一些文本,1个获取值: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