optimizar example encuentro donde descargar php ini

example - Cómo leer y escribir en un archivo ini con PHP



php.ini wordpress (6)

He estado buscando en la documentación oficial de php, pero no puedo encontrar lo que estoy buscando.

http://php.net/manual/en/function.parse-ini-file.php

Solo quiero una función para editar y leer el valor del archivo php ini, por ejemplo,

[default_colors] sitebg = #F8F8F8 footerbg = #F8F8F8 link = #F8F8F8 url = #F8F8F8 bg = #F8F8F8 text = #F8F8F8 border = #F8F8F8 lu_link = #F8F8F8 lu_url = #F8F8F8 lu_bg = #F8F8F8 lu_text = #f505f5 lu_border = #F8F8F8

  1. ¿Cómo leo el valor que pertenece a "lu_link" o "footerbg"?
  2. ¿Cómo escribo un nuevo valor para estos lugares?

A continuación se muestra una implementación de write_ini_file() que actualmente PHP carece, se creará una casi idéntica (excepto los comentarios) de la entrada:

  • Admite líneas nuevas multiplataforma ( PHP_EOL ) agregadas entre secciones.
  • Maneja arreglos de valores de índice y clave.
  • Maneja valores de estilo CONSTANTE.
  • Y bloqueo de archivos para mantenerse consistente.

Fuente

<?php if (!function_exists(''write_ini_file'')) { /** * Write an ini configuration file * * @param string $file * @param array $array * @return bool */ function write_ini_file($file, $array = []) { // check first argument is string if (!is_string($file)) { throw new /InvalidArgumentException(''Function argument 1 must be a string.''); } // check second argument is array if (!is_array($array)) { throw new /InvalidArgumentException(''Function argument 2 must be an array.''); } // process array $data = array(); foreach ($array as $key => $val) { if (is_array($val)) { $data[] = "[$key]"; foreach ($val as $skey => $sval) { if (is_array($sval)) { foreach ($sval as $_skey => $_sval) { if (is_numeric($_skey)) { $data[] = $skey.''[] = ''.(is_numeric($_sval) ? $_sval : (ctype_upper($_sval) ? $_sval : ''"''.$_sval.''"'')); } else { $data[] = $skey.''[''.$_skey.''] = ''.(is_numeric($_sval) ? $_sval : (ctype_upper($_sval) ? $_sval : ''"''.$_sval.''"'')); } } } else { $data[] = $skey.'' = ''.(is_numeric($sval) ? $sval : (ctype_upper($sval) ? $sval : ''"''.$sval.''"'')); } } } else { $data[] = $key.'' = ''.(is_numeric($val) ? $val : (ctype_upper($val) ? $val : ''"''.$val.''"'')); } // empty line $data[] = null; } // open file pointer, init flock options $fp = fopen($file, ''w''); $retries = 0; $max_retries = 100; if (!$fp) { return false; } // loop until get lock, or reach max retries do { if ($retries > 0) { usleep(rand(1, 5000)); } $retries += 1; } while (!flock($fp, LOCK_EX) && $retries <= $max_retries); // couldn''t get the lock if ($retries == $max_retries) { return false; } // got lock, write data fwrite($fp, implode(PHP_EOL, $data).PHP_EOL); // release lock flock($fp, LOCK_UN); fclose($fp); return true; } }

Ejemplo de archivo .ini entrada (tomado de http://php.net/manual/en/function.parse-ini-file.php )

; This is a sample configuration file ; Comments start with '';'', as in php.ini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = "/usr/local/bin" URL = "http://www.example.com/~username" [third_section] phpversion[] = "5.0" phpversion[] = "5.1" phpversion[] = "5.2" phpversion[] = "5.3" urls[svn] = "http://svn.php.net" urls[git] = "http://git.php.net"

Ejemplo de uso:

// load ini file values into array $config = parse_ini_file(''config.ini'', true); // add some additional values $config[''main''][''foobar''] = ''baz''; $config[''main''][''const''][''a''] = ''UPPERCASE''; $config[''main''][''const''][''b''] = ''UPPER_CASE WITH SPACE''; $config[''main''][''array''][] = ''Some Value''; $config[''main''][''array''][] = ''ADD''; $config[''third_section''][''urls''][''docs''] = ''http://php.net''; // write ini file write_ini_file(''config.ini'', $config);

Archivo .ini resultante:

[first_section] one = 1 five = 5 animal = BIRD [second_section] path = "/usr/local/bin" URL = "http://www.example.com/~username" [third_section] phpversion[] = 5.0 phpversion[] = 5.1 phpversion[] = 5.2 phpversion[] = 5.3 urls[svn] = "http://svn.php.net" urls[git] = "http://git.php.net" urls[docs] = "http://php.net" [main] foobar = "baz" const[a] = UPPERCASE const[b] = "UPPER_CASE WITH SPACE" array[] = "Some Value" array[] = ADD


Aquí hay una versión funcional que crea una cadena que se puede escribir en un archivo.

function IniAsStr(array $a) : string { return array_reduce(array_keys($a), function($str, $sectionName) use ($a) { $sub = $a[$sectionName]; return $str . "[$sectionName]" . PHP_EOL . array_reduce(array_keys($sub), function($str, $key) use($sub) { return $str . $key . ''='' . $sub[$key] . PHP_EOL; }) . PHP_EOL; }); }


El paquete PEAR Config_Lite puede hacer casi todo el trabajo (tanto de lectura como de escritura) para usted de manera súper fácil. Compruébelo aquí: http://pear.php.net/package/Config_Lite


Qué tal esto:

$key=''option''; $val=''1.2.3.4.5''; system("sed -ie ''s//({$key}=/)/(.*/)//1{$val}/'' file.in");


Simplemente puede usar ini_set(''lu_link'',''#000000''); o ini_get(''lu_link'') .

Creo que si tienes experiencia limitada en PHP, no es bueno meterse con el archivo .ini .


Simplemente puede usar parse_ini_file con PHP4 / 5.

$ini_array = parse_ini_file("sample.ini"); print_r($ini_array);

Aquí está el documento: http://php.net/manual/en/function.parse-ini-file.php

Para volver a escribir una matriz de objetos en el archivo ini, utilice a continuación como una solución muy rápida y fácil:

function write_php_ini($array, $file) { $res = array(); foreach($array as $key => $val) { if(is_array($val)) { $res[] = "[$key]"; foreach($val as $skey => $sval) $res[] = "$skey = ".(is_numeric($sval) ? $sval : ''"''.$sval.''"''); } else $res[] = "$key = ".(is_numeric($val) ? $val : ''"''.$val.''"''); } safefilerewrite($file, implode("/r/n", $res)); } function safefilerewrite($fileName, $dataToSave) { if ($fp = fopen($fileName, ''w'')) { $startTime = microtime(TRUE); do { $canWrite = flock($fp, LOCK_EX); // If lock not obtained sleep for 0 - 100 milliseconds, to avoid collision and CPU load if(!$canWrite) usleep(round(rand(0, 100)*1000)); } while ((!$canWrite)and((microtime(TRUE)-$startTime) < 5)); //file was locked so now we can store information if ($canWrite) { fwrite($fp, $dataToSave); flock($fp, LOCK_UN); } fclose($fp); } }