在PHP中使用引号时出现的问题

时间:2012-05-08 19:23:14

标签: php quotes

我已经了解到引用在PHP中无关紧要。

但是在下面的代码中,如果我尝试在eval()中使用单引号;我得到错误,另一方面,代码可以正常使用Double Quotes。

$a = '2';
$b = '3';
$c = '$a+$b';
echo $c.'<br/>';
eval("\$c = \"$c\";");
//eval('\$c = \'$c\';');  //Parse error: syntax error, unexpected T_VARIABLE, expecting T_STRING
echo $c;

6 个答案:

答案 0 :(得分:2)

行情很重要; - )

<?php

$color = "red";

echo "My car is $color"; // Outputs "My car is red"
echo 'My car is $color'; // Outputs "My car is $color"

?>

答案 1 :(得分:2)

PHP.net表示使用单引号时不会扩展转义序列。

答案 2 :(得分:1)

与双引号不同,PHP不会用单引号解析变量。

示例:

$name = 'John';
echo 'hello $name'; // hello $name
echo "hello $name"; // hello John

More Information


仅供参考,出于安全原因,在生产环境中使用eval并不是一个好主意。

答案 3 :(得分:1)

使用evalbad idea,但如果您为learning purpose执行此操作,那么正确的方法是

  eval("\$c = \$c;");

答案 4 :(得分:0)

don't use eval并在此处更新您的string-quoting skills

答案 5 :(得分:0)

以下示例取消了:The PHP Manual

<?php
echo 'this is a simple string';

echo 'You can also have embedded newlines in 
strings this way as it is
okay to do';

// Outputs: Arnold once said: "I'll be back"
echo 'Arnold once said: "I\'ll be back"';

// Outputs: You deleted C:\*.*?
echo 'You deleted C:\\*.*?';

// Outputs: You deleted C:\*.*?
echo 'You deleted C:\*.*?';

// Outputs: This will not expand: \n a newline
echo 'This will not expand: \n a newline';

// Outputs: Variables do not $expand $either
echo 'Variables do not $expand $either';
?>