Class for reading INI files

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

Simple class that supports reading sections, single values, and arrays from INI files.

from phpbuilder.com varel

<?

// filename: class.inifile.php

// author: victor m varela (victor@netims.com)

// comment: *.ini file reader for PHP

// license: LGPL

// date: mié oct 25 10:20:10 CEST 2000

//

// vie oct 27 12:25:48 CEST 2000

// 1.01 recognize some bool values (true, false, yes, no, on, off)

//

// vie oct 27 16:00:36 CEST 2000

// 1.02 bugfix: false value was returning default value

//

// lun oct 30 11:55:38 CET 2000

// 1.03 cached engine added

//

// dom dic 3 04:04:36 CET 2000

// 1.04 bug with "=" symbol fixed

// David P. Schwartz (davids@desertigloo.com)

//

// valid formats:

//

// [my-section]

// # single values

// var1 = value1

// var2=value 2

// var3 = 'value 3'

// ; if we use values between ' or ", they are not trimmed

// var4=" value 4"

//

// ; setting an array

// var_array1 = this is var_array1[0]

// var_array1 = this is var_array1[1]

// var_array1 = this is var_array1[2]

//

// sample_var = this is a = symbol

//

// cached values

$iniCachedValues = array();

$iniCachedSections = array();

$iniCachedFilenames = array();

class IniFile {

// private: do not use;

var $filename;

// constructor

function IniFile ($filename)

{

global $iniCachedValues, $iniCachedSections, $iniCachedFilenames;

$section = "";

$this->filename = $filename;

if (file_exists($filename) and ! isset($iniCachedFilenames[$filename])) {

$iniCachedFilenames[$filename] = $filename;

$lines = file($filename);

for ($i = 0; $i < count($lines); $i++) {

$lines[$i] = trim($lines[$i]);

if ($lines[$i][0] == ';' || $lines[$i][0] == '#') {

// it's a commment

continue;

} elseif (ereg("^\[(.*)\]", $lines[$i], $regs)) {

// new section

$section = strtolower(trim($regs[1]));

$iniCachedSections[$filename][] = trim($regs[1]);

} elseif (preg_match("'^(.*?)[\s]*=[\s]*(.*)'", $lines[$i], $regs)) {

// setting variable

$variable = strtolower(trim($regs[1]));

$value = trim($regs[2]);

if (ereg("^[\"'](.*)[\"']$", $value, $regs)) {

$value = $regs[1];

}

$lower_value = strtolower($value);

if (in_array($lower_value, array('true', 'yes', 'on'))) {

$value = 1;

}

elseif (in_array($lower_value, array('false', 'no', 'off'))) {

$value = 0;

}

if (! isset($iniCachedValues[$filename][$section][$variable])) {

// new variable

$iniCachedValues[$filename][$section][$variable] = $value;

}

elseif (gettype($iniCachedValues[$filename][$section][$variable]) == "array") {

// append new element to array

$iniCachedValues[$filename][$section][$variable][] = $value;

}

else {

// two values for a single variable, convert to array

$ovalue = $iniCachedValues[$filename][$section][$variable];

$iniCachedValues[$filename][$section][$variable] = array($ovalue,$value);

}

}

}

}

}

// returns file name

function fileName () { return $this->filename; }

// returns all sections

function readSections () {

global $iniCachedSections;

echo serialize($iniCachedSections);

return $iniCachedSections[$this->filename];

}

// returns all (variable,value) pairs for a section

function readSection ($section) {

global $iniCachedValues;

return $iniCachedValues[$this->filename][strtolower($section)];

}

// returns a value

function value($section, $variable, $default)

{

global $iniCachedValues;

$section = strtolower($section);

$variable = strtolower($variable);

if (isset($iniCachedValues[$this->filename][$section][$variable])) {

return $iniCachedValues[$this->filename][$section][$variable];

}

else {

return $default;

}

}

}

?>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航