不喜欢php的array()类型的配置文件,最近项目需要一个多语言配置,比较喜欢key=value形式的配置文件,于是便抽空写了这么个ini文件操作类代码如下
class IniParse extends Think{
private $file;
var $iniarr=array();
public function __construct($f){
$this->file=$f;
$this->parse();
}
//解析成array
public function parse()
{
$fp=fopen($this->file,"r");
while(($line = fgets($fp,1024))!='')
{
$line=str_replace(array('rn','r','n',' '),'',$line);
$line=trim($line);
if(preg_match('/[(.+)]/',$line,$match))
{
$first=$match[1];
$this->iniarr[$first]=array();
$pre=$first;
}
else
{
list($key,$val)=explode('=',$line);
$this->iniarr[$pre][$key]=$val;
}
}
//dump($this->iniarr);
}
//设置值
public function set($key,$value)
{
foreach($this->iniarr as $k=>$v)
{
if(array_key_exists($key,$v))
{
$this->iniarr[$k][$key]=$value;
}
}
}
//添加一个配置
public function add($key,$arr){
if(array_key_exists($key,$this->iniarr))
{
foreach($arr as $k=>$v)
$this->iniarr[$key][$k]=$v;
}
else
{
$this->iniarr[$key]=$arr;
}
}
//反解析,用于生成ini
public function deparse(){
$content='';
foreach($this->iniarr as $k=>$v)
{
$content.="[".$k."]"."rn";
foreach ($v as $kk=>$vv)
{
$content.=$kk."=".$vv."rn";
}
}
return $content;
}
//保存
public function saveIni(){
import('@.ORG.FileUtil');
FileUtil::writefile($this->file,$this->deparse());
}
}
正文完