代码说

code is poetry

代码说    
碎碎念:位我上者,灿烂星空,道德律令,在我心中。  换一换

php中的eval函数使用说明

作者:coderzheng 发布于:2014-4-8 17:32 Tuesday 分类:php  阅读模式

eval函数允许你将一串字符串传递进去作为php语句运行,下面是官方手册给出的例子:

<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?> 
于是我动手写了一个类似的实例:
<?php
$str = "$arr = array('a'=>'b');";
eval($str);
var_dump($arr);
exit;
>

运行程序会出现报错信息:

我们来仔细分析一下之前那段代码:

<?php
$str = "$arr = array('a'=>'b');"; #定义字符串
eval($str); #运行字符串里面的语句
var_dump($arr); #打印数组内容
exit;
> 

表面上看是没有任何问题,但是仔细分析之后我们看到:第一行中的$arr被放置在双引号内,所以在php环境下运行时$arr是会被解析为值的,显然将一个值类型重新进行赋值操作是不正确的。

修改方法很简单:对字符串中的$进行转义即可,这样它就不会再被解析为值了。

$str = "\$arr = array('a'=>'b');";


标签: php

你可以发表评论、引用到你的网站或博客,或通过RSS 2.0订阅这个博客的所有文章。
上一篇: php异常 - 快速入门  |  下一篇:使用php脚本生成动态css及js代码