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, 27 Aug 2010

view this page in

parse_ini_string

(PHP 5 >= 5.3.0)

parse_ini_stringAnalyse une chaîne de configuration

Description

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

parse_ini_string() retourne la configuration dans une chaîne de type ini dans un tableau associatif.

La structure de la chaîne doit être la même que celle du fichier php.ini.

Liste de paramètres

ini

Le contenu de type ini à analyser.

process_sections

En activant le paramètre process_sections avec TRUE, vous obtiendrez un tableau multidimensionnel, avec les noms de sections et de directives. La valeur par défaut du paramètre process_sections est FALSE

scanner_mode

Peut prendre les valeurs des constantes INI_SCANNER_NORMAL (par défaut) ou INI_SCANNER_RAW. Si INI_SCANNER_RAW est utilisé, les valeurs des options ne seront pas analysées.

Valeurs de retour

Les directives sont retournées sous forme de tableau array en cas de succès, et FALSE en cas d'erreur.

Notes

Note: Il y a plusieurs mots réservés que ne doivent pas être utilisés comme clé dans les fichiers .ini. Cela inclut : null, yes, no, true, false, on, off, none. Les valeurs null, no et false sont retournées comme "" (chaîne vide); les valeurs yes, true, on sont retournées comme "1". Les caractères {}|&~![()^" ne doivent être utilisés nulle part dans les clés, et ont une signification spéciale dans les valeurs.

Voir aussi



pathinfo> <parse_ini_file
Last updated: Fri, 27 Aug 2010
 
add a note add a note User Contributed Notes
parse_ini_string
boukeversteegh at gmail dot com
28-Apr-2010 07: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 09: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
02-Aug-2009 12: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, 27 Aug 2010
 
 
show source | credits | sitemap | contact | advertising | mirror sites