php eval 引号,PHP手册-eval()(可以将单引号中的变量解析)

今天在看一个程序的时候,发现程序中使用了eval函数,这个函数平时不怎么常见,但是听说它还是比较强大的一个php函数,就准备研究它下。

首先,去php手册查了下它的用法,手册上的解释是:把字符串按照 PHP 代码来计算。然后给出了下面的一个例子:

$string = 'cup';

$name = 'coffee'; //定义两个变量

$str = 'This is a $string with my $name in it.';

echo $str. "\n"; //该指令会输出 This is a $string with my $name in it

eval("\$str = \"$str\";");

echo $str. "\n";//该指令会输出 This is a cup with my coffee in it.

eval()函数使用的时候需要注意两点,

(1)一定要中双引号,不要用单引号 如下面的代码

$string = 'cup';

$name = 'coffee'; //定义两个变量

$str = 'This is a $string with my $name in it.';

eval(‘\$str = \’$str\‘;’); echo $str. "\n";

执行上面的代码会输出 This is a $string with my $name in it.并且还会得到错误的提示:Parse error: syntax error, unexpected T_VARIABLE, expecting T_STRING IN….. 究其原因主要是php认为双引号里面的东西需要去执行的,而单引号里面的东西php会直接输出的。

那么下面的代码能执行吗?

$string = 'cup';

$name = 'coffee'; //定义两个变量 $str = 'This is a $string with my $name in it.';

eval("echo $str");

这个代码也是不能执行的,会提示:Parse error: syntax error, unexpected T_STRING, expecting ‘,’ or ‘;’ in….说明我们分号使用的有问题,那么怎么使用分号呢,这也是使用eval函数要注意的第二点

(2)该字符串必须是合法的 PHP 代码,且必须以分号结尾。

这句话不要理解错了,以分号结尾不要理解成$str中加一个分号就可以了,这个分号要加载eval函数执行体中,也就是要这样写

$string = 'cup';

$name = 'coffee'; //定义两个变量 $str = 'This is a $string with my $name in it.';

eval("echo\"$str\";\");

这样就能正常输出了。

最后还要说的是eval函数对于在数据库文本字段中供日后计算而进行的代码存储很有用。该问题日后会举例说明。

从eval函数的使用上我们也看到php对于单引号和双引号解析引擎的对待态度是不一样的,如果想详细了解,可以去

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值