No encuentro una manera que me permita crear un archivo nuevo, trátelo como un archivo ini (no php.ini o similar ... un archivo ini separado por usuario), y crear/borrar 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.crear archivo ini, escribir valores en PHP
Respuesta
Encontrado siguiente fragmento de código a partir 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!
Después de 'if (! Fwrite ($ handle, $ content)) {', el identificador del archivo debe cerrarse. –
También hay un error en el código cuando no se utilizan las secciones, la variable $ key2 debe ser $ key – kjetilh
Esta no es una solución oficial de cómo su comentario no es un comentario oficial de desbordamiento de pila. –
no puedo dar fe de lo bien que funciona, pero hay algunas sugerencias para la implementación de 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 para parse_ini_file
.
Puede utilizar write_ini_file
para enviar los valores a un archivo, parse_ini_file
para leer de nuevo en - modificar la matriz asociativa que parse_ini_file
devoluciones, y luego escribir la matriz modificada de nuevo al archivo con write_ini_file
.
¿Eso funciona para usted?
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";
}
}
$ clave2 debe ser reemplazada por la tecla $ o encontraría teclas de vacío en su ini
+1, Sí, tiene razón –
PERA tiene dos (unidad de prueba) paquetes que hacen el tarea que anhela:
- Config_Lite - ideal si solo deseas
.ini
archivos - Config - lee también
.php
.xml
y archivos
prefiero usar un código bien probado que escribir mi propia.
+1 para la solución probada/compatible –
utilizo 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 a escribir en un archivo .ini
Su fragmento falla si $ array_name contiene una matriz multidimensional dentro. Es decir, si la matriz principal tiene una profundidad de 3 o más. – Tivie
basado en las respuestas anteriores escribí esta clase que pueda 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";
}
}
}
}
- 1. archivo INI de matriz multidimensional en PHP
- 2. php ini crear matrices con parse_ini_file
- 3. ¿Cómo establecer valores booleanos en un archivo de configuración INI?
- 4. ¿Cómo escribir en un archivo en PHP?
- 5. Mejores prácticas para crear un archivo PHP INI/CONFIG y mantenerlo seguro
- 6. Cómo escribir valores vectoriales en un archivo
- 7. Escribir valores en el archivo app.config
- 8. ¿Qué archivo PHP Ini usa mi página web WAMP?
- 9. ¿Es posible agregar campos personalizados al archivo PHP ini?
- 10. Cómo analizar el archivo INI con Boost
- 11. PHP: Escape caracteres ilegales en archivos .ini
- 12. Crear y escribir líneas en un archivo
- 13. ¿Cómo ver un archivo escribir en PHP?
- 14. ¿Escribir un archivo .htaccess en PHP?
- 15. Crear un archivo zip utilizando PHP clase ZipArchive sin escribir el archivo en el disco?
- 16. Forma recomendada para leer y escribir archivos .ini en VBA
- 17. ¿Cómo crear un archivo .INI para almacenar algunas configuraciones en Java?
- 18. Permanentemente escribir variables en un archivo php con php
- 19. mejor configuración de php/ini clase?
- 20. Cómo crear y escribir en un archivo txt usando VBA
- 21. Buenas clases PHP que manipulan archivos .ini
- 22. PHP: output_buffering opción ini se ignora
- 23. ¿Es seguro denegar el acceso al archivo .ini en .htaccess?
- 24. ¿Crear un archivo vacío para escribir?
- 25. IIS: no se sirve un archivo .ini
- 26. Use un archivo .ini diferente para alembic.ini
- 27. lectura de archivo INI simple con AS3
- 28. desactivar el archivo de configuración INI -Werror
- 29. escribir valores enteros en un archivo utilizando out.write()
- 30. Escribir datos de publicaciones en un archivo con PHP
cuando dices "por usuario", ¿qué quieres decir? Por uso de la aplicación PHP? –
¿por qué necesita un archivo .ini por usuario? ¿No debería almacenarse ese tipo de información en un DB? – Omnipresent
bueno, quise decir que quiero un conjunto de archivos ini para cada usuario de la misma aplicación PHP. Por ejemplo, chad.ini, jeff.ini, mary.ini, anne.ini – netrox