<?php
/**
* Little Ini Parser
*
* LICENSE
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @category Little
* @package Little_Ini_Parser
* @copyright Copyright (c) 2008-2020 Nikishaev Andrey (http://andreynikishaev.livejournal.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version 1.1
*/
class Little_Ini_Parser {
static $declared;
/**
* Loads configuration from the configuration files
*
* @param string $pathes - pathes to the configuration files
* @param string $sep_k - key separator string
* @param string $sep_v - value separator string
* @return array - parsed configuration the configuration files
*/
public function parse($pathes, $sep_k='.', $sep_v=',') {
$conf=array();
foreach($pathes as $mp){
$conf+=self::getArr($mp, $sep_k, $sep_v);
}
return $conf;
}
/**
* Loads configuration from the configuration file
* and returns the associative array
*
* @param string $path - path to the configuration file
* @param string $sep_k - key separator string
* @param string $sep_v - value separator string
* @return array - parsed configuration
*/
private function getArr($path, $sep_k='.', $sep_v=',') {
if(!self::$declared) {
function tr($value) {
return trim($value);
}
self::$declared=true;
}
$out=array();
$conf=parse_ini_file($path,true);
foreach($conf as $k=>$v) {
$out[$k]=array();
foreach($v as $key=>$val) {
$keys=explode($sep_k,$key);
$link=&$out[$k];
foreach($keys as $key_sep) {
$link=&$link[$key_sep];
}
if(eregi(',',$val)) {
$values=explode($sep_v,$val);
array_walk($keys,'tr');
$link=$values;
} else {
$link=$val;
}
}
}
return $out;
}
}
|