<?php
$var = '中国';
$str = '您所在的国家是:$var';//这一行是固定的,不能修改的,不允许改成双引号
echo func($str); //结果是// 您所在的国家是:中国上面中的 func($str) 函数应该怎么写,
才能得出结果(echo func($str); //结果是// 您所在的国家是:中国)

解决方案 »

  1.   

    function func($str) {
        global $var;
        return eval($str);
    }//没测试 ...
      

  2.   


    <?php 
    $var = '中国';
    $str = '您所在的国家是:$var';//这一行是固定的,不能修改的,不允许改成双引号
    echo func($str); //结果是// 您所在的国家是:中国function func($str)
    {
    return str_replace('$var','中国',$str);
    //return '您所在的国家是:中国';  这也是可以的 
    }
    ?>
    func函数有什么限制?
      

  3.   

    呵呵,不推荐evalfunction func($str) {
        global $var;
        return eval('return "' . $str . '";');
    }
      

  4.   


    既然不推荐eval, 那你的代码  - -!
      

  5.   

    3楼的代码是行的,不过改下面这样就不行了原来这样才不行。如下:
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in E:\root\php\debug.php(8) : eval()'d code on line 1<?php
    $arr['cn'] = '中国';
    $str = 'id=$arr[\'cn\']';//这一行是固定的,不能修改的,不允许改成双引号
    echo func($str); //结果是// 您所在的国家是:中国function func($str) {
        global $var;
        return eval('return "' . $str . '";');
    }
    ?>
      

  6.   

    发错了,下面这样就不行了<?php
    $arr['cn'] = '中国';
    $str = '您所在的国家是:$arr[\'cn\']';//这一行是固定的,不能修改的,不允许改成双引号
    echo func($str); //结果是// 您所在的国家是:中国function func($str) {
        global $arr;
        return eval('return "' . $str . '";');//stripslashes
    }
    ?>
      

  7.   


    这问题在于单引号,可执行代码如下:$arr['cn'] = '中国';
    $str = '您所在的国家是:$arr[\'cn\']';
    echo func($str);function func($str) {
        global $arr;
        return eval('return "' . str_replace("'", "", $str) . '";');//这里为了偷懒,直接替换了,实际如果需要,替换必须严格的将变量找出来
    }