我有这个字符串内容的数据库:
[$3] [$ 3] [$3.2]
需要按原样回应它。
尝试回应时
echo "[$3] [$ 3] [$3.2]";
得到了这个:
[] [$ 3] [.2]
尝试了urlencode,htmlspecialchars,但没有成功。
我如何回应并得到这个?
[$3] [$ 3] [$3.2]
编辑:
单引号并未给出想要的结果。
echo '[$3] [$ 3] [$3.2]';
[] [$ 3] [.2]
我的php版本是5.2.14,我正在使用Joomla。
EDIT2:
我发现,它不使用单引号的原因是因为Joomla + Jumi。如果我使用纯PHP - 它可以正常工作。
答案 0 :(得分:6)
如果您不希望插值变量值,请使用单引号。
来自PHP manual:
注意:与双引号和heredoc语法不同,特殊字符的变量和转义序列在单引号字符串中不会扩展。
echo '[$3] [$ 3] [$3.2]';
引用对于此特定情况无关紧要,因为PHP变量不能以数字开头。
例如:
echo '[$3] [$ 3] [$3.2]'; // single-quoted
将具有与以下相同的效果:
echo "[$3] [$ 3] [$3.2]"; // double-quoted
两者都应输出:
[$3] [$ 3] [$3.2]
但是,对于有效变量,以上规则适用。
示例:
$var = 'foo';
$string = 'this is a string with $var';
echo $string;
输出:
this is a string with $var
答案 1 :(得分:1)
在双引号内,PHP将任何以$
作为变量开头的内容解释,并尝试输出$3
的内容。
如果您不想要这种行为,只需使用单引号:
echo '[$3] [$ 3] [$3.2]';
答案 2 :(得分:1)
单引号字符串中没有解释变量。双引号字符串。
另外,双引号字符串可以包含没有反斜杠的撇号,而单引号字符串可以包含未转义的引号。
单引号字符串在运行时更快,因为它们不需要解析。
试试这个
echo '[$3] [$ 3] [$3.2]';