0

我了解到引号在 PHP 中并不重要。

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

$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;
4

6 回答 6

2

行情很重要;-)

<?php

$color = "red";

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

?>
于 2012-05-08T19:26:49.170 回答
2

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

于 2012-05-08T19:27:52.327 回答
1

与双引号不同,PHP 不解析单引号中的变量。

例子:

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

更多信息


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

于 2012-05-08T19:25:11.220 回答
1

使用eval是一个bad idea,但如果你这样做,learning purpose那么正确的方法是

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

.

于 2012-05-08T19:28:36.307 回答
0

不要在这里使用 eval和更新你的字符串引用技巧

于 2012-05-08T19:26:16.043 回答
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';
?>
于 2012-05-08T19:34:11.293 回答