$a='$_SERVER';
$b='[\'';
$c='HTTP_HOST';
$d='\']';
echo $a.$b.$c.$d;
echo eval($a.$b.$c.$d);
echo $a.$b.$c.$d 这句没错,显示$_SERVER['HTTP_HOST'],但是我是希望得到域名,因此用了echo eval($a.$b.$c.$d);但是不行了,报错Parse error: syntax error, unexpected $end in F:\newlaituanya\2.php(6) : eval()'d code on line 1这个是怎么回事?我必须得用字符串拼接的方法拼出$_SERVER['HTTP_HOST']来,不能直接用echo $_SERVER['HTTP_HOST'];这真是个问题。

解决方案 »

  1.   

    eval 函数的参数必须是合法的 php 代码
    对于 
    echo eval($a.$b.$c.$d);应写作
    echo eval("return $a$b$c$d;");
      

  2.   

    eval("$url=$a$b$c$d;");
    echo $url;
      

  3.   


    +1你在php文件中怎么写,那么eval具体格式就应该是什么,你在php代码中,也不会就直接些个$_SERVER['HTTP_HOST'],就能显示你要的结果吧;
      

  4.   

    手册中对于eval的提醒
    Note: 因为是一个语言构造器而不是一个函数,不能被 可变函数 调用。
    ----------------------------------------------------------
    就是说,eval构造出来的是一个未解析的php语句,而不是一个“实体”
    这跟new一个array/class可不同……
      

  5.   

     Remember that the string passed must be valid PHP code, including things like terminating statements with a semicolon so the parser doesn't die on the line after the eval(), and properly escaping (妥善转义)things in code_str. To mix HTML output and PHP code you can use a closing PHP tag to leave PHP mode. 
    类似于JS 里 的eval,动态执行代码
    写的时候要转义
    <?php
    $string = 'cup';
    $name = 'coffee';
    $str = 'This is a $string with my $name in it.';
    echo $str. "\n";
    eval("\$str = \"$str\";");
    echo $str. "\n";
    ?>