1 $a="<?php echo 1;?>";
echo $a;
 为什么这样输出为空
2$a="<?php echo 1;?>";
eval($a);
这样输出报错
3$a="<?php echo 1;?>";
eval("?>".$a);
这样才能输出1
最近看框架 发现了这个eval函数 也想到这几个问题 求大神解答 谢谢

解决方案 »

  1.   

    1、
    $a="<?php echo 1;?>";
    echo $a;
      这样输出的并不是空,<?php echo 1;?>
      只不过浏览器把 <?php ?> 当作 html 标记,看不见而已(文本方式下就看见了)2、
    $a="<?php echo 1;?>";
    eval($a);
      这样输出报错
      原因是 eval 的参数需要是合法的 php 语句
      而 <?php
      <?php echo 1; ?>
    显然是错误的
      

  2.   

    1
    <?php
    $a="<?php echo 1;?>";
    echo $a;
    输出:<?php echo 1;?>,你查看浏览器源码就看到了2.
    <?php
    $a="<?php echo 1;?>";
    eval($a);相当于<?php
    <?php echo 1;?>当然出错了3.
    <?php
    $a="<?php echo 1;?>";
    eval("?>".$a);相当于<?php
    ?><?php echo 1;?>所以正确