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\\\';\');');