Skip to content

Commit

Permalink
Added parese_ini_string to workbench
Browse files Browse the repository at this point in the history
  • Loading branch information
kvz committed Feb 4, 2010
1 parent 2a909af commit efa5394
Show file tree
Hide file tree
Showing 2 changed files with 173 additions and 1 deletion.
1 change: 0 additions & 1 deletion _unported/filesystem/parse_ini_string.js

This file was deleted.

173 changes: 173 additions & 0 deletions _workbench/filesystem/parse_ini_string.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
// Original: http://nl3.php.net/manual/en/function.parse-ini-file.php#78815


function parse_ini_string ( $filepath ) {
$ini = file( $filepath );
if ( count( $ini ) == 0 ) { return array(); }
$sections = array();
$values = array();
$globals = array();
$i = 0;
for( $ini in $line ){
$line = trim( $line );
// Comments
if ( $line == '' || $line.substr(0,1) == ';' ) { continue; }
// Sections
if ( $line.substr(0,1) == '[' ) {
$sections.push($line.substr(1, -1));
$i++;
continue;
}
// Key-value pair
list( $key, $value ) = explode( '=', $line, 2 );
$key = trim( $key );
$value = trim( $value );
if ( $i == 0 ) {
// Array values
if ( substr( $line, -1, 2 ) == '[]' ) {
$globals[ $key ].push($value);
} else {
$globals[ $key ].push($value);
}
} else {
// Array values
if ( substr( $line, -1, 2 ) == '[]' ) {
$values[ $i - 1 ][ $key ].push($value);
} else {
$values[ $i - 1 ][ $key ] = $value;
}
}
}
for( $j=0; $j<$i; $j++ ) {
$result[ $sections[ $j ] ] = $values[ $j ];
}
return $result + $globals;
}

// Better? http://nl3.php.net/manual/en/function.parse-ini-file.php#82900
//function _parse_ini_file($file, $process_sections = false) {
// $process_sections = ($process_sections !== true) ? false : true;
//
// $ini = file($file);
// 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
// list($key, $value) = explode('=', $line, 2);
// $key = trim($key);
// $value = trim($value);
// 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;
// }
// }
// }
//
// for($j = 0; $j < $i; $j++) {
// if ($process_sections === true) {
// $result[$sections[$j]] = $values[$j];
// } else {
// $result[] = $values[$j];
// }
// }
//
// return $result + $globals;
//}
//?>
//
//usage regarding semicolons:
//<?php
//;sample.ini
//
//variable1 = v1;v1
//variable 2 = "v2;v2"
//variable_3 = "v3;v3;v3"
//variable4 = "v4;v4" ;v4
//variable 5 = "v5;v5;v5" ;v5
//variable_6 = "v6;v6" ;v6;;
//variable7 = "v7;;v7"
//variable 8 = 'v8;v8'
//variable_9 = 'v9;v9;v9'
//variable10 = 'v10;v10' ;v10
//variable 11 = 'v11;v11;v11' ;v11
//variable_12 = 'v12;v12' ;v2;;
//variable13 = 'v13;;v13'
//variable 14 = "v14
//variable_15 = 'v15
//variable16 = "v16;v16
//variable 17 = 'v17;v17
//?>
//<?php
////example.php
//print_r(_parse_ini_file("sample.ini"));
//?>
//<?php
////example.php output
//Array
//(
// [variable1] => v1
// [variable 2] => v2;v2
// [variable_3] => v3;v3;v3
// [variable4] => v4;v4
// [variable 5] => v5;v5;v5
// [variable_6] => v6;v6
// [variable7] => v7;;v7
// [variable 8] => v8;v8
// [variable_9] => v9;v9;v9
// [variable10] => v10;v10
// [variable 11] => v11;v11;v11
// [variable_12] => v12;v12
// [variable13] => v13;;v13
// [variable 14] => v14
// [variable_15] => v15
// [variable16] => v16
// [variable 17] => v17
//)

0 comments on commit efa5394

Please sign in to comment.