variable recibir por pasar incluir ejemplos codigo archivo php configuration ini

recibir - pasar variables por url php post



crear archivo ini, escribir valores en PHP (6)

No puedo encontrar una manera que me permita fácilmente crear un nuevo archivo, tratarlo como un archivo ini (no php.ini o similar ... un archivo ini separado para cada usuario), y crear / eliminar valores usando PHP. PHP parece no ofrecer una manera fácil de crear un archivo ini y leer / escribir / borrar valores. Hasta ahora, todo es solo "leer", nada sobre crear entradas o manipular claves / valores.


Basado en las respuestas anteriores, escribí esta clase que podría ser útil. Para PHP 5.3, pero se puede adaptar fácilmente para las versiones anteriores.

class Utils { public static function write_ini_file($assoc_arr, $path, $has_sections) { $content = ''''; if (!$handle = fopen($path, ''w'')) return FALSE; self::_write_ini_file_r($content, $assoc_arr, $has_sections); if (!fwrite($handle, $content)) return FALSE; fclose($handle); return TRUE; } private static function _write_ini_file_r(&$content, $assoc_arr, $has_sections) { foreach ($assoc_arr as $key => $val) { if (is_array($val)) { if($has_sections) { $content .= "[$key]/n"; self::_write_ini_file_r(&$content, $val, false); } else { foreach($val as $iKey => $iVal) { if (is_int($iKey)) $content .= $key ."[] = $iVal/n"; else $content .= $key ."[$iKey] = $iVal/n"; } } } else { $content .= "$key = $val/n"; } } } }


No puedo garantizar lo bien que funciona, pero hay algunas sugerencias para implementar lo contrario de parse_ini_file() (es decir, write_ini_file , que no es una función estándar de PHP) en la página de documentación de parse_ini_file .

Puede usar write_ini_file para enviar los valores a un archivo, parse_ini_file para parse_ini_file a leerlos - modifique la matriz asociativa que devuelve parse_ini_file y luego vuelva a escribir la matriz modificada en el archivo con write_ini_file .

Eso funciona para ti?


PEAR tiene dos paquetes (unidad probada) que hacen la tarea que anhela:

  • Config_Lite : ideal si solo quieres archivos .ini
  • Config - lee también archivos .php y .xml

Prefiero usar un código bien probado que escribir el mío.


Se encontró el siguiente fragmento de código de los comentarios de la documentación de PHP:

function write_ini_file($assoc_arr, $path, $has_sections=FALSE) { $content = ""; if ($has_sections) { foreach ($assoc_arr as $key=>$elem) { $content .= "[".$key."]/n"; foreach ($elem as $key2=>$elem2) { if(is_array($elem2)) { for($i=0;$i<count($elem2);$i++) { $content .= $key2."[] = /"".$elem2[$i]."/"/n"; } } else if($elem2=="") $content .= $key2." = /n"; else $content .= $key2." = /"".$elem2."/"/n"; } } } else { foreach ($assoc_arr as $key=>$elem) { if(is_array($elem)) { for($i=0;$i<count($elem);$i++) { $content .= $key."[] = /"".$elem[$i]."/"/n"; } } else if($elem=="") $content .= $key." = /n"; else $content .= $key." = /"".$elem."/"/n"; } } if (!$handle = fopen($path, ''w'')) { return false; } $success = fwrite($handle, $content); fclose($handle); return $success; }

Uso:

$sampleData = array( ''first'' => array( ''first-1'' => 1, ''first-2'' => 2, ''first-3'' => 3, ''first-4'' => 4, ''first-5'' => 5, ), ''second'' => array( ''second-1'' => 1, ''second-2'' => 2, ''second-3'' => 3, ''second-4'' => 4, ''second-5'' => 5, )); write_ini_file($sampleData, ''./data.ini'', true);

¡Buena suerte!


Yo uso esto y parece que funciona

function listINIRecursive($array_name, $indent = 0) { global $str; foreach ($array_name as $k => $v) { if (is_array($v)) { for ($i=0; $i < $indent * 5; $i++){ $str.= " "; } $str.= " [$k] /r/n"; listINIRecursive($v, $indent + 1); } else { for ($i=0; $i < $indent * 5; $i++){ $str.= " "; } $str.= "$k = $v /r/n"; } } }

devuelve el texto para escribir en un archivo .ini


en esta porción de código:

else { foreach ($assoc_arr as $key=>$elem) { if(is_array($elem)) { for($i=0;$i<count($elem);$i++) { $content .= $key2."[] = /"".$elem[$i]."/"/n"; } } else if($elem=="") $content .= $key2." = /n"; else $content .= $key2." = /"".$elem."/"/n"; } }

$ key2 debe ser reemplazado por $ key o encontrará llaves vacías en su .ini