php eval函数用法总结


Posted in PHP onOctober 31, 2012

eval定义和用法

eval() 函数把字符串按照 PHP 代码来计算。

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

如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。

语法
eval(phpcode)


参数 描述
phpcode 必需。规定要计算的 PHP 代码。

提示和注释
注释:返回语句会立即终止对字符串的计算。
注释:该函数对于在数据库文本字段中供日后计算而进行的代码存储很有用。
例子

<?php 
$string = "beautiful"; 
$time = "winter"; 
$str = 'This is a $string $time morning!'; 
echo $str. "<br />"; 
eval("$str = "$str";"); 
echo $str; 
?>

输出:
代码如下复制代码 This is a $string $time morning!
This is a beautiful winter morning!
eval() 函数在CodeIgniter框架里也有用到。在 /system/database/DB.php 文件中,根据系统的配置动态的定义了一个类 CI_DB,具体代码片段如下:?
if ( ! isset($active_record) OR $active_record == TRUE) 
{ 
require_once(BASEPATH.'database/DB_active_rec.php'); 
if ( ! class_exists('CI_DB')) 
{ 
eval('class CI_DB extends CI_DB_active_record { }'); 
} 
} 
else 
{ 
if ( ! class_exists('CI_DB')) 
{ 
eval('class CI_DB extends CI_DB_driver { }'); 
} 
} 
require_once(BASEPATH.'database/drivers/'.$params['dbdriver'].'/'.$params['dbdriver'].'_driver.php'); 
// Instantiate the DB adapter 
$driver = 'CI_DB_'.$params['dbdriver'].'_driver'; 
$DB = new $driver($params);

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

PHP 相关文章推荐
php数组总结篇(一)
Sep 30 PHP
php 面试碰到过的问题 在此做下记录
Jun 09 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
Oct 27 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
Nov 10 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
Laravel 4.2 中队列服务(queue)使用感受
Oct 30 PHP
9条PHP编程小知识及易犯的小错误
Jan 22 PHP
php ImageMagick windows下安装教程
Jan 26 PHP
php 参数过滤、数据过滤详解
Oct 26 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
微信开发之获取JSAPI TICKET
Jul 07 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
Mar 18 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
php daddslashes()和 saddslashes()有哪些区别分析
Oct 26 #PHP
You might like
用PHP和ACCESS写聊天室(一)
2006/10/09 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
js传值 判断
2006/10/26 Javascript
javascript读取xml
2006/11/04 Javascript
一段好玩的JavaScript代码
2006/12/01 Javascript
用JS剩余字数计算的代码
2008/07/03 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
jQuery的Ajax的自动完成功能控件简要说明
2013/02/22 Javascript
jquery 设置style:display的方法
2015/01/29 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
python 自动化将markdown文件转成html文件的方法
2016/09/23 Python
Python 对象中的数据类型
2017/05/13 Python
基于python实现从尾到头打印链表
2019/11/02 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
志愿者活动总结范文
2014/04/26 职场文书
广播体操比赛口号
2014/06/10 职场文书
主持稿开场白
2015/06/01 职场文书
我的兄弟姐妹观后感
2015/06/15 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers