浅谈PHP eval()函数定义和用法


Posted in PHP onJune 21, 2016

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);

以上这篇浅谈PHP eval()函数定义和用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
查找mysql字段中固定字符串并替换的几个方法
Sep 23 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
Oct 25 PHP
php实现读取内存顺序号
Mar 29 PHP
为你总结一些php系统类函数
Oct 21 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
Sep 19 PHP
CI框架中类的自动加载问题分析
Nov 21 PHP
PHP的mysqli_rollback()函数讲解
Jan 23 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
Jun 21 #PHP
Docker 如何布置PHP开发环境
Jun 21 #PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 #PHP
Yii2组件之多图上传插件FileInput的详细使用教程
Jun 20 #PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 #PHP
php中的登陆login实例代码
Jun 20 #PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
Jun 19 #PHP
You might like
php 团购折扣计算公式
2011/11/24 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
js类式继承的具体实现方法
2013/12/31 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
python简单程序读取串口信息的方法
2015/03/13 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
python设计微型小说网站(基于Django+Bootstrap框架)
2019/07/08 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
自学python用什么系统好
2020/06/23 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
教师自我评价范例
2013/09/24 职场文书
大学在校生求职信范文
2013/11/21 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
师德师风演讲稿
2014/05/05 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
争先创优心得体会
2014/09/12 职场文书
获奖感言怎么写
2015/07/31 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers
浅析InnoDB索引结构
2021/04/05 MySQL