downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

pathinfo> <parse_ini_file
Last updated: Fri, 03 Sep 2010

view this page in

parse_ini_string

(PHP 5 >= 5.3.0)

parse_ini_string設定文字列をパースする

説明

array parse_ini_string ( string $ini [, bool $process_sections = false [, int $scanner_mode = INI_SCANNER_NORMAL ]] )

parse_ini_string() は、文字列 ini の設定を連想配列で返します。

文字列の構造は、php.ini の構造と同じです。

パラメータ

ini

パースしたい ini ファイルの内容。

process_sections

process_sectionsTRUE に設定すると、セクション名と設定を含む多次元配列を返します。 process_sections のデフォルトは FALSE です。

scanner_mode

INI_SCANNER_NORMAL (デフォルト) あるいは INI_SCANNER_RAWINI_SCANNER_RAW を指定すると、オプションの値はパースされません。

返り値

成功した場合に設定を連想配列形式で返します。 失敗した場合に FALSE を返します。

注意

注意: ini ファイル上でキーとして使ってはいけない単語があります。 null, yes, no, true, false, on, off, none などです。 null, no および false は "" となり、yes および true は "1" となります。 次の文字 {}|&~![()^" は、キーで使ってはいけません。 また、値の中で特別な意味を持ちます。

参考



pathinfo> <parse_ini_file
Last updated: Fri, 03 Sep 2010
 
add a note add a note User Contributed Notes
parse_ini_string
boukeversteegh at gmail dot com
28-Apr-2010 05:05
<?php
# Define parse_ini_string if it doesn't exist.
# Does accept lines starting with ; as comments
# Does not accept comments after values
if( !function_exists('parse_ini_string') ){
   
    function
parse_ini_string( $string ) {
       
$array = Array();

       
$lines = explode("\n", $string );
       
        foreach(
$lines as $line ) {
           
$statement = preg_match(
"/^(?!;)(?P<key>[\w+\.\-]+?)\s*=\s*(?P<value>.+?)\s*$/", $line, $match );

            if(
$statement ) {
               
$key    = $match[ 'key' ];
               
$value    = $match[ 'value' ];
               
               
# Remove quote
               
if( preg_match( "/^\".*\"$/", $value ) || preg_match( "/^'.*'$/", $value ) ) {
                   
$value = mb_substr( $value, 1, mb_strlen( $value ) - 2 );
                }
               
               
$array[ $key ] = $value;
            }
        }
        return
$array;
    }
}
?>
alexandre at nospam dot imaginacom dot com
21-Oct-2009 07:24
If your server has yet not been updated to PHP 5.2 (like mine), the following function can help you without having to use temporary paths.

I tried to make it the more similar possible to the PHP's behaviour, including dealing with errors or exceptions.

<?php
if(!function_exists('parse_ini_string')){
    function
parse_ini_string($str, $ProcessSections=false){
       
$lines  = explode("\n", $str);
       
$return = Array();
       
$inSect = false;
        foreach(
$lines as $line){
           
$line = trim($line);
            if(!
$line || $line[0] == "#" || $line[0] == ";")
                continue;
            if(
$line[0] == "[" && $endIdx = strpos($line, "]")){
               
$inSect = substr($line, 1, $endIdx-1);
                continue;
            }
            if(!
strpos($line, '=')) // (We don't use "=== false" because value 0 is not valid as well)
               
continue;
           
           
$tmp = explode("=", $line, 2);
            if(
$ProcessSections && $inSect)
               
$return[$inSect][trim($tmp[0])] = ltrim($tmp[1]);
            else
               
$return[trim($tmp[0])] = ltrim($tmp[1]);
        }
        return
$return;
    }
}
?>
aldo at mschat dot net
01-Aug-2009 10:28
If you want to use something like this on a PHP version below that of PHP 5.3, you can emulate it roughly by doing something like this:

<?php
if(!function_exists('parse_ini_string'))
{
  function
parse_ini_string($ini, $process_sections = false, $scanner_mode = null)
  {
   
# Generate a temporary file.
   
$tempname = tempnam('/tmp', 'ini');
   
$fp = fopen($tempname, 'w');
   
fwrite($fp, $ini);
   
$ini = parse_ini_file($tempname, !empty($process_sections));
   
fclose($fp);
    @
unlink($tempname);
    return
$ini;
  }
}
?>

May not be the most efficient way (I suppose you could do some regex stuff instead...) but it certainly works!

pathinfo> <parse_ini_file
Last updated: Fri, 03 Sep 2010
 
 
show source | credits | sitemap | contact | advertising | mirror sites