Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在对eval()的嵌套调用中使用单引号?_Php_Eval - Fatal编程技术网

Php 如何在对eval()的嵌套调用中使用单引号?

Php 如何在对eval()的嵌套调用中使用单引号?,php,eval,Php,Eval,我试图使用单引号嵌套调用eval(): 但是,这会触发以下错误: 语法错误,意外的“hi”(T_字符串) 如何使用单引号并解决此错误?您在转义单引号时遇到问题。您可以使用双引号代替-“hi”代替“hi”: eval('eval(\'echo "hi";\');'); 如果需要使用单引号,则转义单引号的反斜杠本身需要转义,并带有一对附加反斜杠(\\);i、 e: 这将产生: 嗨 可以想象,随着嵌套级别的增加,这将很快变得混乱 值得注意的是,eval()被认为是危险的,您应该只在非常谨慎的情况下使

我试图使用单引号嵌套调用
eval()

但是,这会触发以下错误:

语法错误,意外的“hi”(T_字符串)


如何使用单引号并解决此错误?

您在转义单引号时遇到问题。您可以使用双引号代替-
“hi”
代替
“hi”

eval('eval(\'echo "hi";\');');
如果需要使用单引号,则转义单引号的反斜杠本身需要转义,并带有一对附加反斜杠(
\\
);i、 e:

这将产生:

可以想象,随着嵌套级别的增加,这将很快变得混乱

值得注意的是,
eval()
被认为是危险的,您应该只在非常谨慎的情况下使用它,在这种情况下,您已经彻底评估了使用它没有风险,并且没有更好的方法来实现您的目标

如合同所述:

小心语言构造
eval()
非常危险,因为它允许执行任意PHP代码。因此,不鼓励使用它。如果您已经仔细验证了除了使用此构造之外没有其他选择,请特别注意,在未事先正确验证的情况下,不要将任何用户提供的数据传递到该构造中

值得在堆栈溢出中搜索一些


希望这有帮助:)

你到底为什么要这样做?你有一个引号转义问题,如果你用
“hi”
而不是
“hi”
eval('eval(\'echo“hi”;\');))。但我同意@johncode,我有点困惑你为什么这么做that@DarraghEnright谢谢问题解决了!但是我如何使用单引号呢?我已经发布了一个答案
eval('eval(\'echo "hi";\');');
eval('eval(\'echo \\\'hi\\\';\');');