【问题标题】:Double quotes issue in eval PHPeval PHP中的双引号问题
【发布时间】:2018-10-04 16:11:41
【问题描述】:

这是我的代码,我收到这样的错误。

解析错误:语法错误,意外 '' ";' (T_ENCAPSED_AND_WHITESPACE) 在 C:\wamp64\www\PHPQC\php\base\meditabmssql\med_pa​​ge.php(1369) : eval()'d 代码在第 1 行。

代码:

<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string wi"th my $name in it.';
eval("\$str = \"$str\";");
echo $str;
?>

这是一个参考(http://php.net/manual/en/function.eval.php)

【问题讨论】:

  • 只是一个提示:除非您完全知道自己在做什么,否则不要使用 eval。基本上所有事情都可以在没有 eval 的情况下完成 - 不会对安全性和性能产生巨大影响。
  • 你想用这个达到什么目的?

标签: php escaping eval


【解决方案1】:

你应该转义一些字符:

<?php
$string = 'cup'; 
$name = 'coffee'; 
$str = 'This is a $string wi"th my $name in it.'; 
eval("\$str = \"\$str\";"); 
echo $str;
?>

【讨论】:

  • 这不能替代$str 中的$string$name
【解决方案2】:

您需要转义 $str 中的引号。您可以为此使用addslashes()

<?php
$string = 'cup'; 
$name = 'coffee'; 
$str = 'This is a $string wi"th my $name in it.'; 
$strslash = addslashes($str);
eval("\$str = \"$strslash\";"); 
echo $str;
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多