Вход Регистрация
Файл: sys/inc/parse_ini_string.php
Строк: 71
<?php

/**
 * @author http://php.net/manual/en/function.parse-ini-string.php
 * parse_ini_string_m аналог функции parse_ini_string.
 * написана из-за отсутствия php 5.3 на одном хостинге.
 * parse_ini_string_m:
 * - Игнорирует строки комментариев, которые начинаются с ";" или "#"
 * - игнорирует пробелы, которые не имеют "="
 * - поддерживает массив значений и ключи к значениям массива
 */
if (!function_exists('parse_ini_string')) {
    function 
parse_ini_string($str)
    {
        if (empty(
$str)) {
            return 
false;
        }

        
$lines explode("n"$str);
        
$ret = array();
        
$inside_section false;

        foreach (
$lines as $line) {
            
$line trim($line);

            if (!
$line || $line[0] == "#" || $line[0] == ";") {
                continue;
            }
       
        
            if (
$line[0] == "[" && $endIdx strpos($line"]")) {
                
$inside_section substr($line1$endIdx-1);
                continue;
            }

            if (!
strpos($line'=')) {
                continue;
            }

            
$tmp explode("="$line2);

            if (
$inside_section) {
                
$key rtrim($tmp[0]);
                
$value ltrim($tmp[1]);

                if (
preg_match("/^".*"$/"$value) || preg_match("/^'.*'$/"$value)) {
                    
$value mb_substr($value1mb_strlen($value) - 2);
                }

                
$t preg_match("^[(.*?)]^"$key$matches);
                if (!empty(
$matches) && isset($matches[0])) {
                    
$arr_name preg_replace('#[(.*?)]#is'''$key);

                    if (!isset(
$ret[$inside_section][$arr_name]) || !is_array($ret[$inside_section][$arr_name])) {
                        
$ret[$inside_section][$arr_name] = array();
                    }

                    if (isset(
$matches[1]) && !empty($matches[1])) {
                        
$ret[$inside_section][$arr_name][$matches[1]] = $value;
                    } else {
                        
$ret[$inside_section][$arr_name][] = $value;
                    }
                } else {
                    
$ret[$inside_section][trim($tmp[0])] = $value;
                }
            } else {
                
$ret[trim($tmp[0])] = ltrim($tmp[1]);
            }
        }
        return 
$ret;
    }
}
Онлайн: 0
Реклама