php - valores - Lectura y escritura de archivos de configuración
manejo de archivos en java netbeans (3)
Estoy escribiendo un pequeño script que genera alguna configuración para dispositivos. Quiero tener un archivo separado, donde estoy almacenando la configuración, y cambiar algunas cadenas durante la impresión del contenido de la configuración en el navegador. ¿Cómo puedo reemplazar una cadena en una línea del archivo con una variable de $ _POST [''somevariable'']?
-- Información adicional --
Tengo varios tipos de dispositivos. Quiero tener un archivo separado con plantilla de configuración para cada tipo de dispositivo. Si alguien quiere cambiar la configuración de algún tipo de dispositivo, ellos cambiarán ese archivo no el archivo php. Pero para usar esta plantilla en php tengo que reemplazar alguna cadena en ese archivo antes de imprimir en la página web, por ejemplo: sys info nombre_host% nombre_host% sys ubicación info% ubicación% ip set% ip% las cadenas entre %% ( podría ser cualquier otro) los caracteres deberían reemplazarse por $ _POST ["host_name"], $ _POST ["location"], $ _POST ["ip"] etc. Todos estos params obtenidos del formulario publicado.
Estoy de acuerdo con Gordon.
Si no sigues su consejo, puedes hacer algo como esto:
$file = file_get_contents(''./conf.tpl'');
$file = str_replace(''%server%'', ''localhost'', $file);
file_put_contents(''./conf.txt'', $file);
Use SQLite. A continuación, puede consultar datos específicos y aún tener un archivo local. FYI - La cotización PDO agrega automáticamente comillas simples alrededor de un valor.
$Filename = "MyDB.db";
try {
$SQLHandle = new PDO("sqlite:".$Filename);
}
catch(PDOException $e) {
echo $e->getMessage()." :: ".$Filename;
}
$SQLHandle->exec("CREATE TABLE IF NOT EXISTS MyTable (ID INTEGER PRIMARY KEY, MyColumn TEXT)");
$SQLHandle->beginTransaction();
$SQLHandle->exec("INSERT INTO MyTable (MyColumn) VALUES (".$SQLHandle->quote("MyValue").")");
$SQLHandle->exec("INSERT INTO MyTable (MyColumn) VALUES (".$SQLHandle->quote("MyValue 2").")");
$SQLHandle->commit();
$Iterator = $SQLHandle->query("SELECT * FROM MyTable ORDER BY MyColumn ASC");
unset($SQLHandle);
foreach($Iterator as $Row) {
echo $Row["MyColumn"]."/n";
}
Es aconsejable utilizar un formato de archivo estructurado de algún tipo para este fin.
Considere usar CSV , Ini , XML , JSON o YAML y use las API adecuadas para leerlos y escribirlos.
Otra alternativa sería almacenar la configuración en una matriz y luego usar serialize / unserialize o usar var_export / include para usarla.
Ejemplo muy básico:
class MyConfig
{
public static function read($filename)
{
$config = include $filename;
return $config;
}
public static function write($filename, array $config)
{
$config = var_export($config, true);
file_put_contents($filename, "<?php return $config ;");
}
}
Podrías usar la clase así:
MyConfig::write(''conf1.txt'', array( ''setting_1'' => ''foo'' ));
$config = MyConfig::read(''conf1.txt'');
$config[''setting_1''] = ''bar'';
$config[''setting_2''] = ''baz'';
MyConfig::write(''conf1.txt'', $config);