操作.ini文件的好PHP类
发布时间:2020-12-13 18:14:57 所属栏目:PHP教程 来源:网络整理
导读:我需要能够编辑.ini文件(我正在用parse_ini_file读取),但是这样就保留了注释和格式(换行符,缩进). 你知道任何对这类东西有优秀和优化功能的优秀课程吗? 您可以尝试从此开始,它会读取ini文件,并在写入时保留设置,您必须扩展它以支持添加新条目: class ini {
|
我需要能够编辑.ini文件(我正在用parse_ini_file读取),但是这样就保留了注释和格式(换行符,缩进).
你知道任何对这类东西有优秀和优化功能的优秀课程吗?
您可以尝试从此开始,它会读取ini文件,并在写入时保留设置,您必须扩展它以支持添加新条目:
class ini {
protected $lines;
public function read($file) {
$this->lines = array();
$section = '';
foreach(file($file) as $line) {
// comment or whitespace
if(preg_match('/^s*(;.*)?$/',$line)) {
$this->lines[] = array('type' => 'comment','data' => $line);
// section
} elseif(preg_match('/[(.*)]/',$line,$match)) {
$section = $match[1];
$this->lines[] = array('type' => 'section','data' => $line,'section' => $section);
// entry
} elseif(preg_match('/^s*(.*?)s*=s*(.*?)s*$/',$match)) {
$this->lines[] = array('type' => 'entry','section' => $section,'key' => $match[1],'value' => $match[2]);
}
}
}
public function get($section,$key) {
foreach($this->lines as $line) {
if($line['type'] != 'entry') continue;
if($line['section'] != $section) continue;
if($line['key'] != $key) continue;
return $line['value'];
}
throw new Exception('Missing Section or Key');
}
public function set($section,$key,$value) {
foreach($this->lines as &$line) {
if($line['type'] != 'entry') continue;
if($line['section'] != $section) continue;
if($line['key'] != $key) continue;
$line['value'] = $value;
$line['data'] = $key . " = " . $value . "rn";
return;
}
throw new Exception('Missing Section or Key');
}
public function write($file) {
$fp = fopen($file,'w');
foreach($this->lines as $line) {
fwrite($fp,$line['data']);
}
fclose($fp);
}
}
$ini = new ini();
$ini->read("C:php.ini");
$ini->set('PHP','engine','Off');
echo $ini->get('PHP','engine');
$ini->write("C:php.ini");
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
