heredoc输出包含引号的变量吗?

时间:2014-06-17 16:19:03

标签: php html variables double-quotes heredoc

我正在使用它:

$variable = "Name is \"Bob\"";
$message = <<<EOF
    <input type="text" value="$variable">
EOF;

结果是:

enter image description here

实际上,这是合成示例,我正在使用db。但我尝试过:这个合成的例子有效(模拟问题,实际上它表明我正在做的事情不起作用)。

3 个答案:

答案 0 :(得分:2)

是的,引号将出现在HTML中。

由于引号将结束属性值,因此您将使HTML无效。

您需要使用htmlspecialchars()使变量HTML安全。

答案 1 :(得分:1)

您正在生成无效的HTML:

<input type="text" value="Name is "Bob"">

请在插入前使用htmlspecialchars()$variable进行编码。

答案 2 :(得分:1)

heredoc只是多线回波的便捷捷径。它并不关心字符串中的内容,它只是输出。

以下两种结构之间没有区别:

$foo = "A string with an \" embedded quote";

echo <<<EOL
Hello, $foo, how are you
EOL;

echo "Hello, $foo, how are you";

唯一真正的区别是你在字符串的其余部分没有转义引号:

echo <<<EOL
This is a "quoted phrase" within a sentence
EOL;

echo "This is a \"quoted phrase\" within a sentence";