這個函數(shù)我想很多朋友都知道,黑客用得最多的一句了,可以解析php 代碼并且運(yùn)行,eval是函數(shù)不可在php中禁止,以前我就以為可以在php.ini禁止此函數(shù),結(jié)果失敗了.
定義和用法
eval() 函數(shù)把字符串按照 PHP 代碼來計算,該字符串必須是合法的 PHP 代碼,且必須以分號結(jié)尾,如果沒有在代碼字符串中調(diào)用 return 語句,則返回 NULL,如果代碼中存在解析錯誤,則 eval() 函數(shù)返回 false.
語法:eval(phpcode)
參數(shù) 描述
phpcode 必需,規(guī)定要計算的 PHP 代碼.
提示和注釋
注釋:返回語句會立即終止對字符串的計算.
注釋:該函數(shù)對于在數(shù)據(jù)庫文本字段中供日后計算而進(jìn)行的代碼存儲很有用.
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() 函數(shù)在CodeIgniter框架里也有用到,在 /system/database/DB.php 文件中,根據(jù)系統(tǒng)的配置動態(tài)的定義了一個類 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,phpfensi.com
- $driver = 'CI_DB_'.$params['dbdriver'].'_driver';
- $DB = new $driver($params);
本函式可將字符串之中的變量值代入,通常用在處理數(shù)據(jù)庫的數(shù)據(jù)上,參數(shù) code_str 為欲處理的字符串,值得注意的是待處理的字符串要符合 PHP 的字符串格式,同時在結(jié)尾處要有分號,使用本函式處理后的字符串會沿續(xù)到 PHP 程序結(jié)束.
轉(zhuǎn)載請注明來源:php eval函數(shù)用法總結(jié)哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無需額外費(fèi)用,即可穩(wěn)步提升排名至首頁。歡迎體驗最佳的哈爾濱網(wǎng)站建設(shè)。
