PATH:
home
/
vcomplcotr
/
www
/
wp-content
/
plugins
/
akeebabackupwp
/
app
/
vendor
/
akeeba
/
awf
/
src
/
Utils
<?php /** * @package awf * @copyright Copyright (c)2014-2026 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU GPL version 3 or later */ namespace Awf\Utils; /** * PHP will, by default, parse INI files and INI strings in the default mode, i.e. allowing variable interpolation and * requiring wrapping the value in double quotes. * * For example, ${foo} will be replaced with the contents of the variable $foo in the current context. * * This is problematic when you have passwords where such special characters are very likely to occur. * * Since ANGIE will only parse a small amount of INI data and is used infrequently we bypass the problem by using a much * slower, but safe, parser written entirely in PHP instead of the native functions. */ abstract class ParseIni { /** * Parse an INI file and return an associative array. * * @param string $file The file to process * @param bool $process_sections True to also process INI sections * * @return array An associative array of sections, keys and values */ public static function parse_ini_file($file, $process_sections, $rawdata = false) { if ($rawdata) { return self::parse_ini_file_php($file, $process_sections, $rawdata); } else { return self::parse_ini_file_php($file, $process_sections); } } /** * A PHP based INI file parser. * * Thanks to asohn ~at~ aircanopy ~dot~ net for posting this handy function on * the parse_ini_file page on http://gr.php.net/parse_ini_file * * @param string $file Filename to process * @param bool $process_sections True to also process INI sections * @param bool $rawdata If true, the $file contains raw INI data, not a filename * * @return array An associative array of sections, keys and values */ static function parse_ini_file_php($file, $process_sections = false, $rawdata = false) { $process_sections = (bool)$process_sections; if (!$rawdata) { $ini = file($file); } else { $file = str_replace("\r", "", $file); $ini = explode("\n", $file); } if (!is_array($ini)) { return array(); } if (count($ini) == 0) { return array(); } $sections = array(); $values = array(); $result = array(); $globals = array(); $i = 0; foreach ($ini as $line) { $line = trim($line); $line = str_replace("\t", " ", $line); // Comments if (!preg_match('/^[a-zA-Z0-9[]/', $line)) { continue; } // Sections if ($line[0] == '[') { $tmp = explode(']', $line); $sections[] = trim(substr($tmp[0], 1)); $i++; continue; } // Key-value pair $lineParts = explode('=', $line, 2); if (count($lineParts) != 2) { continue; } $key = trim($lineParts[0]); $value = trim($lineParts[1]); unset($lineParts); if (strstr($value, ";")) { $tmp = explode(';', $value); if (count($tmp) == 2) { if ((($value[0] != '"') && ($value[0] != "'")) || preg_match('/^".*"\s*;/', $value) || preg_match('/^".*;[^"]*$/', $value) || preg_match("/^'.*'\s*;/", $value) || preg_match("/^'.*;[^']*$/", $value) ) { $value = $tmp[0]; } } else { if ($value[0] == '"') { $value = preg_replace('/^"(.*)".*/', '$1', $value); } elseif ($value[0] == "'") { $value = preg_replace("/^'(.*)'.*/", '$1', $value); } else { $value = $tmp[0]; } } } $value = trim($value); $value = trim($value, "'\""); if ($i == 0) { if (substr($line, -1, 2) == '[]') { $globals[$key][] = $value; } else { $globals[$key] = $value; } } else { if (substr($line, -1, 2) == '[]') { $values[$i - 1][$key][] = $value; } else { $values[$i - 1][$key] = $value; } } } if ($process_sections) { for ($j = 0; $j < $i; $j++) { if (isset($sections[$j]) && isset($values[$j])) { $result[$sections[$j]] = $values[$j]; } } return $result + $globals; } foreach ($values as $chunk) { $globals = array_merge($globals, $chunk); } return $globals; } }
[+]
..
[-] StringHandling.php
[edit]
[-] PhpTokenizer.php
[edit]
[-] Utf8.php
[edit]
[-] Collection.php
[edit]
[-] helpers.php
[edit]
[-] Ip.php
[edit]
[-] Path.php
[edit]
[-] ArrayHelper.php
[edit]
[-] ParseIni.php
[edit]
[-] HashHelper.php
[edit]
[-] Buffer.php
[edit]
[-] Template.php
[edit]