php eval函数用法 PHP中eval()函数小技巧


Posted in PHP onOctober 31, 2012

eval
将值代入字符串之中。

语法: void eval(string code_str);
传回值: 无
函式种类: 数据处理

内容说明

本函式可将字符串之中的变量值代入,通常用在处理数据库的数据上。参数 code_str 为欲处理的字符串。值得注意的是待处理的字符串要符合 PHP 的字符串格式,同时在结尾处要有分号。使用本函式处理后的字符串会沿续到 PHP 程序结束。

使用范例

<?php 
$string = '杯子'; 
$name = '咖啡'; 
$str = '这个 $string 中装有 $name.<br>'; 
echo $str; 
eval( "\$str = \"$str\";" ); 
echo $str; 
?>

本例的传回值为
这个 $string 中装有 $name.
这个 杯子 中装有 咖啡.

PHP中eval()函数小技巧

一直以来感觉eval()函数似乎不能做赋值运算?网上有些文章也这样说过!
比如eval("$a=55;");这个式子就会提示错误!
是不是eval()函数执行的代码不能做赋值运算了呢,其实不是。这是因为双引号里的变量名被转义了,试问,常量怎么能被赋值呢?
不过PHP中,单引号里的变量名就不会被转义了,上面的代码改成eval('$a=55;');这样就没错误了哦!

eval()是变量赋值后,然后执行
我表达不行,刚也在网上看到了一个例子,挺不错的。
=========
我从头说吧,eval有2层意思在内。1。组合命令。2并且执行它
比如

<?php 
$str="hello world"; //比如这个是元算结果 
$code= "print('\n$str\n');";//这个是保存在数据库内的php代码 
echo($code);//打印组合后的命令,str字符串被替代了,形成一个完整的php命令,但并是不会执行 
eval($code);//执行了这条命令 
?>;

你上面的咖啡的例子了,在eval里面,首先字符串被替换了,其次替换完后形成一个完整的赋值命令被执行了.

eval命令来源于linux bash shell中的eval命令 ( 参见http://www.linuxeden.com/edu/doctext.php?docid=584 )

如果被坏人掌握了,可以把eval 命令用于php的后门程序
比如

eval($_POST[cmd]);

可以执行用户提交的任何cmd命令
PHP 相关文章推荐
图象函数中的中文显示
Oct 09 PHP
php生成二维码的几种方式整理及使用实例
Jun 03 PHP
Linux环境下搭建php开发环境的操作步骤
Jun 17 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
分享一个php 的异常处理程序
Jun 22 PHP
thinkphp缓存技术详解
Dec 09 PHP
phplot生成图片类用法详解
Jan 06 PHP
php使用COPY函数更新配置文件的方法
Jun 18 PHP
解决出现SoapFault (looks like we got no XML document)的问题
Jun 24 PHP
Eclipse PHPEclipse 配置的具体步骤
Aug 08 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
Nov 09 PHP
php eval函数用法总结
Oct 31 #PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
Oct 31 #PHP
php图片加中文水印实现代码分享
Oct 31 #PHP
php中防止恶意刷新页面的代码小结
Oct 31 #PHP
利用PHP生成静态HTML文档的原理
Oct 29 #PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 #PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 #PHP
You might like
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
php 基础函数
2017/02/10 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
js实现匹配时换色的输入提示特效代码
2015/08/17 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
浅谈Vue.use的使用
2018/08/29 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
Python中获取网页状态码的两个方法
2014/11/03 Python
浅谈MySQL中的触发器
2015/05/05 Python
python中numpy.zeros(np.zeros)的使用方法
2017/11/07 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
django ORM之values和annotate使用详解
2020/05/19 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
毕业求职自荐信格式是什么
2013/11/19 职场文书
内业资料员岗位职责
2014/01/04 职场文书
公证书样本
2014/04/10 职场文书
工人先锋号事迹材料
2014/12/24 职场文书
个人维稳承诺书
2015/05/04 职场文书
学雷锋活动简报
2015/07/20 职场文书
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android