$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'];这真是个问题。
对于
echo eval($a.$b.$c.$d);应写作
echo eval("return $a$b$c$d;");
echo $url;
+1你在php文件中怎么写,那么eval具体格式就应该是什么,你在php代码中,也不会就直接些个$_SERVER['HTTP_HOST'],就能显示你要的结果吧;
Note: 因为是一个语言构造器而不是一个函数,不能被 可变函数 调用。
----------------------------------------------------------
就是说,eval构造出来的是一个未解析的php语句,而不是一个“实体”
这跟new一个array/class可不同……
类似于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";
?>