Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to read and write to an ini file with PHP

Tags:

php

ini

I've been looking around the official php documentation but I'm unable to find what I'm looking for.

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

I just want a function to edit and read the value from the php ini file, for instance,

[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. How do I read the value belonging to "lu_link" or "footerbg"?
  2. How to I write a new value for these places?
like image 559
Joricam Avatar asked Apr 17 '11 17:04

Joricam


People also ask

How do I write data into an ini file?

Line 1: Load the file into an array. Line 2: set the value. Next lines: Compile ini file content. Last line: write content to disk.

How do I read a .ini file?

How to Open and Edit INI Files. It's not a common practice for people to open or edit INI files, but they can be opened and changed with any text editor. Just double-clicking it will automatically open it in the Notepad application in Windows.


2 Answers

You can simply use parse_ini_file with PHP4/5.

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

Here is the doc: http://php.net/manual/en/function.parse-ini-file.php

To write back an array of objects back to the ini file, use below as a very fast & easy solution:

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);     }  } 
like image 60
Teoman Soygul Avatar answered Sep 21 '22 15:09

Teoman Soygul


The PEAR Config_Lite package can do almost all the work (both reading and writing) for you super-easily. Check it out here: http://pear.php.net/package/Config_Lite

like image 39
Winfield Trail Avatar answered Sep 22 '22 15:09

Winfield Trail