lbarnaud                Wed Nov  5 21:35:03 2008 UTC

  Added files:                 (Branch: PHP_5_3)
    /php-src/ext/standard/tests/general_functions       
                                                        
parse_ini_string_001.phpt 
                                                        
parse_ini_string_002.phpt 

  Modified files:              
    /php-src    NEWS 
    /ZendEngine2        zend_ini_scanner.l 
    /php-src/ext/standard       basic_functions.c basic_functions.h 
  Log:
  MFH: Added parse_ini_string() function (grange at lemonde dot fr, Arnaud)
  [DOC] new function parse_ini_string()
        proto array parse_ini_string(string ini_string
            [, bool process_sections [, int scanner_mode]])
        Same as parse_ini_file() except that it takes a string instead of a
        filename.
  
  
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.965.2.363&r2=1.2027.2.547.2.965.2.364&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.965.2.363 
php-src/NEWS:1.2027.2.547.2.965.2.364
--- php-src/NEWS:1.2027.2.547.2.965.2.363       Tue Nov  4 23:01:13 2008
+++ php-src/NEWS        Wed Nov  5 21:35:01 2008
@@ -10,6 +10,7 @@
   parameter validation. (Felipe)
 - Changed openssl info to show the shared library version number. (Scott)
 
+- Added parse_ini_string() function. (grange at lemonde dot fr, Arnaud) 
 - Added str_getcsv() function. (Sara)
 - Added ability to send user defined HTTP headers with SOAP request.
   (Brian J.France, Dmitry)
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_ini_scanner.l?r1=1.41.2.2.2.2.2.12&r2=1.41.2.2.2.2.2.13&diff_format=u
Index: ZendEngine2/zend_ini_scanner.l
diff -u ZendEngine2/zend_ini_scanner.l:1.41.2.2.2.2.2.12 
ZendEngine2/zend_ini_scanner.l:1.41.2.2.2.2.2.13
--- ZendEngine2/zend_ini_scanner.l:1.41.2.2.2.2.2.12    Sun Nov  2 23:36:10 2008
+++ ZendEngine2/zend_ini_scanner.l      Wed Nov  5 21:35:02 2008
@@ -20,7 +20,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_ini_scanner.l,v 1.41.2.2.2.2.2.12 2008/11/02 23:36:10 lbarnaud 
Exp $ */
+/* $Id: zend_ini_scanner.l,v 1.41.2.2.2.2.2.13 2008/11/05 21:35:02 lbarnaud 
Exp $ */
 
 #include <errno.h>
 #include "zend.h"
@@ -188,7 +188,7 @@
 */
 char *zend_ini_scanner_get_filename(TSRMLS_D)
 {
-       return ini_filename;
+       return ini_filename ? ini_filename : "Unknown";
 }
 /* }}} */
 
@@ -481,7 +481,7 @@
 }
 
 <INITIAL>{TABS_AND_SPACES}*[#][^\r\n]*{NEWLINE} { /* #Comment */
-       zend_error(E_DEPRECATED, "Comments starting with '#' are deprecated in 
%s on line %d", ini_filename, SCNG(lineno));
+       zend_error(E_DEPRECATED, "Comments starting with '#' are deprecated in 
%s on line %d", zend_ini_scanner_get_filename(TSRMLS_C), SCNG(lineno));
        BEGIN(INITIAL);
        SCNG(lineno)++;
        return END_OF_LINE;
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/basic_functions.c?r1=1.725.2.31.2.64.2.68&r2=1.725.2.31.2.64.2.69&diff_format=u
Index: php-src/ext/standard/basic_functions.c
diff -u php-src/ext/standard/basic_functions.c:1.725.2.31.2.64.2.68 
php-src/ext/standard/basic_functions.c:1.725.2.31.2.64.2.69
--- php-src/ext/standard/basic_functions.c:1.725.2.31.2.64.2.68 Sun Nov  2 
21:19:37 2008
+++ php-src/ext/standard/basic_functions.c      Wed Nov  5 21:35:02 2008
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: basic_functions.c,v 1.725.2.31.2.64.2.68 2008/11/02 21:19:37 felipe 
Exp $ */
+/* $Id: basic_functions.c,v 1.725.2.31.2.64.2.69 2008/11/05 21:35:02 lbarnaud 
Exp $ */
 
 #include "php.h"
 #include "php_streams.h"
@@ -989,6 +989,13 @@
        ZEND_ARG_INFO(0, scanner_mode)
 ZEND_END_ARG_INFO()
 
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_parse_ini_string, 0, 0, 1)
+    ZEND_ARG_INFO(0, ini_string)
+    ZEND_ARG_INFO(0, process_sections)
+    ZEND_ARG_INFO(0, scanner_mode)
+ZEND_END_ARG_INFO()
+
 #if ZEND_DEBUG
 static
 ZEND_BEGIN_ARG_INFO(arginfo_config_get_hash, 0)
@@ -3450,6 +3457,7 @@
        PHP_FE(connection_status,                                               
                                                arginfo_connection_status)
        PHP_FE(ignore_user_abort,                                               
                                                arginfo_ignore_user_abort)
        PHP_FE(parse_ini_file,                                                  
                                                arginfo_parse_ini_file)
+       PHP_FE(parse_ini_string,                                                
                                                arginfo_parse_ini_string)
 #if ZEND_DEBUG
        PHP_FE(config_get_hash,                                                 
                                                arginfo_config_get_hash)
 #endif
@@ -6372,6 +6380,43 @@
 }
 /* }}} */
 
+/* {{{ proto array parse_ini_string(string ini_string [, bool process_sections 
[, int scanner_mode]])
+   Parse configuration string */
+PHP_FUNCTION(parse_ini_string)
+{
+       char *string = NULL, *str = NULL;
+       int str_len = 0;
+       zend_bool process_sections = 0;
+       long scanner_mode = ZEND_INI_SCANNER_NORMAL;
+       zend_ini_parser_cb_t ini_parser_cb;
+
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|bl", &str, 
&str_len, &process_sections, &scanner_mode) == FAILURE) {
+               RETURN_FALSE;
+       }
+
+       /* Set callback function */
+       if (process_sections) {
+               BG(active_ini_file_section) = NULL;
+               ini_parser_cb = (zend_ini_parser_cb_t) 
php_ini_parser_cb_with_sections;
+       } else {
+               ini_parser_cb = (zend_ini_parser_cb_t) php_simple_ini_parser_cb;
+       }
+
+       /* Setup string */
+       string = (char *) emalloc(str_len + ZEND_MMAP_AHEAD);
+       memcpy(string, str, str_len);
+       memset(string + str_len, 0, ZEND_MMAP_AHEAD);
+
+       array_init(return_value);
+       if (zend_parse_ini_string(string, 0, scanner_mode, ini_parser_cb, 
return_value TSRMLS_CC) == FAILURE) {
+               zend_hash_destroy(Z_ARRVAL_P(return_value));
+               efree(Z_ARRVAL_P(return_value));
+               RETVAL_FALSE;
+       }
+       efree(string);
+}
+/* }}} */
+
 #if ZEND_DEBUG
 /* This function returns an array of ALL valid ini options with values and 
  *  is not the same as ini_get_all() which returns only registered ini 
options. Only useful for devs to debug php.ini scanner/parser! */
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/basic_functions.h?r1=1.139.2.4.2.6.2.9&r2=1.139.2.4.2.6.2.10&diff_format=u
Index: php-src/ext/standard/basic_functions.h
diff -u php-src/ext/standard/basic_functions.h:1.139.2.4.2.6.2.9 
php-src/ext/standard/basic_functions.h:1.139.2.4.2.6.2.10
--- php-src/ext/standard/basic_functions.h:1.139.2.4.2.6.2.9    Tue Apr 15 
08:44:21 2008
+++ php-src/ext/standard/basic_functions.h      Wed Nov  5 21:35:02 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: basic_functions.h,v 1.139.2.4.2.6.2.9 2008/04/15 08:44:21 jani Exp $ */
+/* $Id: basic_functions.h,v 1.139.2.4.2.6.2.10 2008/11/05 21:35:02 lbarnaud 
Exp $ */
 
 #ifndef BASIC_FUNCTIONS_H
 #define BASIC_FUNCTIONS_H
@@ -127,6 +127,7 @@
 
 /* From the INI parser */
 PHP_FUNCTION(parse_ini_file);
+PHP_FUNCTION(parse_ini_string);
 #if ZEND_DEBUG
 PHP_FUNCTION(config_get_hash);
 #endif

http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/general_functions/parse_ini_string_001.phpt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/general_functions/parse_ini_string_001.phpt
+++ php-src/ext/standard/tests/general_functions/parse_ini_string_001.phpt
--TEST--
Test parse_ini_string() function
--FILE--
<?php
/* Prototype: array parse_ini_string(string $string [,bool $process_sections]);
   Description: parse_ini_string() loads in the ini file specified in filename,
     and returns the settings in it in an associative array. 
*/

$parse_string = <<<EOD
; Comment starts with semi-colon(;)
; Section starts with [<section name>]

; start of ini file

[Constans]
one = 1
five = 5
animal = BIRD
Language = PHP
PHP_CONSTANT = 1.2345678
10 = Ten
HELLO = HELLO

[date]
date = 
time =

[paths]
path = /usr/local/bin
URL = http://www.php.net

[Decimal]
Decimal_value1 = 100
Decimal_value2 = -100
Decimal_value3 = -2147483647
Decimal_value4 = 2147483647
Decimal_value5 = -2147483648
Decimal_value6 = 2147483648

[Octal]
Octal_value = 0100

[Hex]
Hex_value1 = 0x101
Hex_Value2 = 0x102
Hex_Value2 = 0x103

[Non-alphanumerics_as_values]
;Non-alpha numeric chars without quotes
Non_alpha1 = ;
Non_alpha2 = +
Non_alpha3 = *
Non_alpha4 = %
Non_alpha5 = <>
Non_alpha6 = @
Non_alpha7 = #
Non_alpha8 = ^
Non_alpha9 = -
Non_alpha10 = :
Non_alpha11 = ?
Non_alpha12 = /
Non_alpha13 = \
;These chars have a special meaning when used in the value,
;  hence parser throws an error
;Non_alpha14 = & 
;Non_alpha15 = {}
;Non_alpha16 = |
;Non_alpha17 = ~
;Non_alpha18 = !
;Non_alpha19 = $
;Non_alpha20 = () 

Non_alpha1_quotes = ";"
Non_alpha2_quotes = "+"
Non_alpha3_quotes = "*"
Non_alpha4_quotes = "%"
Non_alpha5_quotes = "<>"
Non_alpha6_quotes = "@"
Non_alpha7_quotes = "#"
Non_alpha8_quotes = "^"
Non_alpha9_quotes = "-"
Non_alpha10_quotes = "="
Non_alpha11_quotes = ":"
Non_alpha12_quotes = "?"
Non_alpha13_quotes = "/"
;Non_alpha14_quotes = "\"
Non_alpha15_quotes = "&"
Non_alpha16_quotes = "{}"
Non_alpha17_quotes = "|"
Non_alpha18_quotes = "~"
Non_alpha19_quotes = "!"
;Non_alpha20_quotes = "$"
Non_alpha21_quotes = "()"

[Non-alpha numerics in strings]
;expected error, as the non-alphanumeric chars not enclosed in double quotes("")
Non_alpha_string1 = [EMAIL PROTECTED]
;Non_alpha_string2 = Hello!world
;Non_alpha_string3 = Hello#world
;Non_alpha_string4 = Hello%world
;Non_alpha_string5 = Hello&world
;Non_alpha_string6 = Hello*world
;Non_alpha_string7 = Hello+world
;Non_alpha_string8 = Hello-world
;Non_alpha_string9 = Hello'world
;Non_alpha_string10 = Hello:world
;Non_alpha_string11 = Hello;world
;Non_alpha_string12 = Hello<world
;Non_alpha_string13 = Hello>world
;Non_alpha_string14 = Hello>world
;Non_alpha_string15 = Hello?world
;Non_alpha_string16 = Hello\world
;Non_alpha_string17 = Hello^world
;Non_alpha_string18 = Hello_world
;Non_alpha_string19 = Hello|world
;Non_alpha_string20 = Hello~world
;Non_alpha_string21 = Hello`world
;Non_alpha_string22 = Hello(world)

[Non-alpha numerics in strings -with quotes]
Non_alpha_string1_quotes = "[EMAIL PROTECTED]"
Non_alpha_string2_quotes = "Hello!world"
Non_alpha_string3_quotes = "Hello#world"
Non_alpha_string4_quotes = "Hello&world"
Non_alpha_string5_quotes = "Hello*world"
Non_alpha_string6_quotes = "Hello+world"
Non_alpha_string7_quotes = "Hello-world"
Non_alpha_string8_quotes = "Hello'world"
Non_alpha_string9_quotes = "Hello:world"
Non_alpha_string10_quotes = "Hello;world"
Non_alpha_string11_quotes = "Hello<world"
Non_alpha_string12_quotes = "Hello>world"
Non_alpha_string13_quotes = "Hello>world"
Non_alpha_string14_quotes = "Hello?world"
Non_alpha_string15_quotes = "Hello\world"
Non_alpha_string16_quotes = "Hello^world"
Non_alpha_string17_quotes = "Hello_world"
Non_alpha_string18_quotes = "Hello|world"
Non_alpha_string19_quotes = "Hello~world"
Non_alpha_string20_quotes = "Hello`world"
Non_alpha_string21_quotes = "Hello(world)"

[Newlines_in_Values]
String1 = "Hello, world\nGood Morning"
String2 = "\nHello, world
             Good Morning\n"
String3 = 'Hello, world\tGood Morning'
String4 = "\n"
String5 = "\n\n"
String6 = Hello, world\tGood Morning

[ReservedKeys_as_Values]
Key1 = YES
Key2 = Yes
Key3 = yEs
Key4 = NO
Key5 = No
Key6 = nO
Key7 = TRUE
Key8 = True
Key9 = tRUE
Key10 = true
Key11 = FALSE
Key12 = False
Key13 = false
Key14 = fAlSE
Key15 = NULL
Key16 = Null
Key17 = nuLL
Key18 = null

[ReservedKeys_as_Keys] 
; Expected:error, reserved key words must not be used as keys for ini file
;YES = 1
;Yes = 2
;yEs = 1.2
;YES = YES
;NO = ""
;No = "string"
;nO = "\0"
;TRUE = 1.1
;True = 1
;tRUE = 5
;true = TRUE
;FALSE = FALSE
;False = ""
;false = "hello"
;fAlSE = ""
;NULL = ""
;Null = 0
;nuLL = "\0"
;null = NULL

; end of ini file
EOD;

echo "*** Test parse_ini_string() function:  with various keys and values given 
in string ***\n";
echo "-- ini string without process_sections optional arg --\n";
define('BIRD', 'Humming bird');
$ini_array = parse_ini_string($parse_string);
print_r($ini_array);

echo "\n-- ini string with process_sections as TRUE --\n";
$ini_array = parse_ini_string($parse_string, TRUE);
print_r($ini_array);

echo "*** Done **\n";
?>
--EXPECTF--
*** Test parse_ini_string() function:  with various keys and values given in 
string ***
-- ini string without process_sections optional arg --
Array
(
    [one] => 1
    [five] => 5
    [animal] => Humming bird
    [Language] => PHP
    [PHP_CONSTANT] => 1.2345678
    [10] => Ten
    [HELLO] => HELLO
    [date] => 
    [time] => 
    [path] => /usr/local/bin
    [URL] => http://www.php.net
    [Decimal_value1] => 100
    [Decimal_value2] => -100
    [Decimal_value3] => -2147483647
    [Decimal_value4] => 2147483647
    [Decimal_value5] => -2147483648
    [Decimal_value6] => 2147483648
    [Octal_value] => 0100
    [Hex_value1] => 0x101
    [Hex_Value2] => 0x103
    [Non_alpha1] => 
    [Non_alpha2] => +
    [Non_alpha3] => *
    [Non_alpha4] => %
    [Non_alpha5] => <>
    [Non_alpha6] => @
    [Non_alpha7] => #
    [Non_alpha8] => ^
    [Non_alpha9] => -
    [Non_alpha10] => :
    [Non_alpha11] => ?
    [Non_alpha12] => /
    [Non_alpha13] => \
    [Non_alpha1_quotes] => ;
    [Non_alpha2_quotes] => +
    [Non_alpha3_quotes] => *
    [Non_alpha4_quotes] => %
    [Non_alpha5_quotes] => <>
    [Non_alpha6_quotes] => @
    [Non_alpha7_quotes] => #
    [Non_alpha8_quotes] => ^
    [Non_alpha9_quotes] => -
    [Non_alpha10_quotes] => =
    [Non_alpha11_quotes] => :
    [Non_alpha12_quotes] => ?
    [Non_alpha13_quotes] => /
    [Non_alpha15_quotes] => &
    [Non_alpha16_quotes] => {}
    [Non_alpha17_quotes] => |
    [Non_alpha18_quotes] => ~
    [Non_alpha19_quotes] => !
    [Non_alpha21_quotes] => ()
    [Non_alpha_string1] => [EMAIL PROTECTED]
    [Non_alpha_string1_quotes] => [EMAIL PROTECTED]
    [Non_alpha_string2_quotes] => Hello!world
    [Non_alpha_string3_quotes] => Hello#world
    [Non_alpha_string4_quotes] => Hello&world
    [Non_alpha_string5_quotes] => Hello*world
    [Non_alpha_string6_quotes] => Hello+world
    [Non_alpha_string7_quotes] => Hello-world
    [Non_alpha_string8_quotes] => Hello'world
    [Non_alpha_string9_quotes] => Hello:world
    [Non_alpha_string10_quotes] => Hello;world
    [Non_alpha_string11_quotes] => Hello<world
    [Non_alpha_string12_quotes] => Hello>world
    [Non_alpha_string13_quotes] => Hello>world
    [Non_alpha_string14_quotes] => Hello?world
    [Non_alpha_string15_quotes] => Hello\world
    [Non_alpha_string16_quotes] => Hello^world
    [Non_alpha_string17_quotes] => Hello_world
    [Non_alpha_string18_quotes] => Hello|world
    [Non_alpha_string19_quotes] => Hello~world
    [Non_alpha_string20_quotes] => Hello`world
    [Non_alpha_string21_quotes] => Hello(world)
    [String1] => Hello, world
Good Morning
    [String2] => 
Hello, world
             Good Morning

    [String3] => Hello, world   Good Morning
    [String4] => 

    [String5] => 


    [String6] => Hello, world   Good Morning
    [Key1] => 1
    [Key2] => 1
    [Key3] => 1
    [Key4] => 
    [Key5] => 
    [Key6] => 
    [Key7] => 1
    [Key8] => 1
    [Key9] => 1
    [Key10] => 1
    [Key11] => 
    [Key12] => 
    [Key13] => 
    [Key14] => 
    [Key15] => 
    [Key16] => 
    [Key17] => 
    [Key18] => 
)

-- ini string with process_sections as TRUE --
Array
(
    [Constans] => Array
        (
            [one] => 1
            [five] => 5
            [animal] => Humming bird
            [Language] => PHP
            [PHP_CONSTANT] => 1.2345678
            [10] => Ten
            [HELLO] => HELLO
        )

    [date] => Array
        (
            [date] => 
            [time] => 
        )

    [paths] => Array
        (
            [path] => /usr/local/bin
            [URL] => http://www.php.net
        )

    [Decimal] => Array
        (
            [Decimal_value1] => 100
            [Decimal_value2] => -100
            [Decimal_value3] => -2147483647
            [Decimal_value4] => 2147483647
            [Decimal_value5] => -2147483648
            [Decimal_value6] => 2147483648
        )

    [Octal] => Array
        (
            [Octal_value] => 0100
        )

    [Hex] => Array
        (
            [Hex_value1] => 0x101
            [Hex_Value2] => 0x103
        )

    [Non-alphanumerics_as_values] => Array
        (
            [Non_alpha1] => 
            [Non_alpha2] => +
            [Non_alpha3] => *
            [Non_alpha4] => %
            [Non_alpha5] => <>
            [Non_alpha6] => @
            [Non_alpha7] => #
            [Non_alpha8] => ^
            [Non_alpha9] => -
            [Non_alpha10] => :
            [Non_alpha11] => ?
            [Non_alpha12] => /
            [Non_alpha13] => \
            [Non_alpha1_quotes] => ;
            [Non_alpha2_quotes] => +
            [Non_alpha3_quotes] => *
            [Non_alpha4_quotes] => %
            [Non_alpha5_quotes] => <>
            [Non_alpha6_quotes] => @
            [Non_alpha7_quotes] => #
            [Non_alpha8_quotes] => ^
            [Non_alpha9_quotes] => -
            [Non_alpha10_quotes] => =
            [Non_alpha11_quotes] => :
            [Non_alpha12_quotes] => ?
            [Non_alpha13_quotes] => /
            [Non_alpha15_quotes] => &
            [Non_alpha16_quotes] => {}
            [Non_alpha17_quotes] => |
            [Non_alpha18_quotes] => ~
            [Non_alpha19_quotes] => !
            [Non_alpha21_quotes] => ()
        )

    [Non-alpha numerics in strings] => Array
        (
            [Non_alpha_string1] => [EMAIL PROTECTED]
        )

    [Non-alpha numerics in strings -with quotes] => Array
        (
            [Non_alpha_string1_quotes] => [EMAIL PROTECTED]
            [Non_alpha_string2_quotes] => Hello!world
            [Non_alpha_string3_quotes] => Hello#world
            [Non_alpha_string4_quotes] => Hello&world
            [Non_alpha_string5_quotes] => Hello*world
            [Non_alpha_string6_quotes] => Hello+world
            [Non_alpha_string7_quotes] => Hello-world
            [Non_alpha_string8_quotes] => Hello'world
            [Non_alpha_string9_quotes] => Hello:world
            [Non_alpha_string10_quotes] => Hello;world
            [Non_alpha_string11_quotes] => Hello<world
            [Non_alpha_string12_quotes] => Hello>world
            [Non_alpha_string13_quotes] => Hello>world
            [Non_alpha_string14_quotes] => Hello?world
            [Non_alpha_string15_quotes] => Hello\world
            [Non_alpha_string16_quotes] => Hello^world
            [Non_alpha_string17_quotes] => Hello_world
            [Non_alpha_string18_quotes] => Hello|world
            [Non_alpha_string19_quotes] => Hello~world
            [Non_alpha_string20_quotes] => Hello`world
            [Non_alpha_string21_quotes] => Hello(world)
        )

    [Newlines_in_Values] => Array
        (
            [String1] => Hello, world
Good Morning
            [String2] => 
Hello, world
             Good Morning

            [String3] => Hello, world   Good Morning
            [String4] => 

            [String5] => 


            [String6] => Hello, world   Good Morning
        )

    [ReservedKeys_as_Values] => Array
        (
            [Key1] => 1
            [Key2] => 1
            [Key3] => 1
            [Key4] => 
            [Key5] => 
            [Key6] => 
            [Key7] => 1
            [Key8] => 1
            [Key9] => 1
            [Key10] => 1
            [Key11] => 
            [Key12] => 
            [Key13] => 
            [Key14] => 
            [Key15] => 
            [Key16] => 
            [Key17] => 
            [Key18] => 
        )

    [ReservedKeys_as_Keys] => Array
        (
        )

)
*** Done **

http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/general_functions/parse_ini_string_002.phpt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/general_functions/parse_ini_string_002.phpt
+++ php-src/ext/standard/tests/general_functions/parse_ini_string_002.phpt
--TEST--
parse_ini_string() multiple calls
--FILE--
<?php

var_dump(parse_ini_string());
var_dump(parse_ini_string(1,1,1,1));

$ini = "
test =
";
var_dump(parse_ini_string($ini));
$ini = "
test==
";
var_dump(parse_ini_string($ini));

$ini = "
test=test=
";
var_dump(parse_ini_string($ini));

$ini = "
test= \"new
line\"
";
var_dump(parse_ini_string($ini));

define("TEST_CONST", "test const value");
$ini = "
test=TEST_CONST
";
var_dump(parse_ini_string($ini));

$ini = "
[section]
test=hello
";
var_dump(parse_ini_string($ini, true));

$ini = "
[section]
test=hello
";
var_dump(parse_ini_string($ini, false));

$ini = "
section.test=hello
";
var_dump(parse_ini_string($ini, true));

$ini = "
[section]
section.test=hello
";
var_dump(parse_ini_string($ini, true));

$ini = "
[section]
1=2
";
var_dump(parse_ini_string($ini, true));

$ini = "
1=2
";
var_dump(parse_ini_string($ini, true));
$ini = "
test=test2
test=test3
test=test4
";
var_dump(parse_ini_string($ini, true));

/* From bug #44574 */
$ini = "[section1]\nname = value";
var_dump(parse_ini_string($ini, true));

/* #44842, labels starting with underscore */
$ini = <<<'INI'
foo=bar1
_foo=bar2
foo_=bar3
INI;
var_dump(parse_ini_string($ini, true));

echo "Done\n";
?>
--EXPECTF--     
Warning: parse_ini_string() expects at least 1 parameter, 0 given in %s
bool(false)

Warning: parse_ini_string() expects at most 3 parameters, 4 given in %s
bool(false)
array(1) {
  [%u|b%"test"]=>
  %unicode|string%(0) ""
}

Warning: syntax error, unexpected '=' in Unknown on line 2
 in %s
bool(false)

Warning: syntax error, unexpected '=' in Unknown on line 2
 in %s
bool(false)
array(1) {
  [%u|b%"test"]=>
  %unicode|string%(8) "new
line"
}
array(1) {
  [%u|b%"test"]=>
  %unicode|string%(16) "test const value"
}
array(1) {
  [%u|b%"section"]=>
  array(1) {
    [%u|b%"test"]=>
    %unicode|string%(5) "hello"
  }
}
array(1) {
  [%u|b%"test"]=>
  %unicode|string%(5) "hello"
}
array(1) {
  [%u|b%"section.test"]=>
  %unicode|string%(5) "hello"
}
array(1) {
  [%u|b%"section"]=>
  array(1) {
    [%u|b%"section.test"]=>
    %unicode|string%(5) "hello"
  }
}
array(1) {
  [%u|b%"section"]=>
  array(1) {
    [1]=>
    %unicode|string%(1) "2"
  }
}
array(1) {
  [1]=>
  %unicode|string%(1) "2"
}
array(1) {
  [%u|b%"test"]=>
  %unicode|string%(5) "test4"
}
array(1) {
  [%u|b%"section1"]=>
  array(1) {
    [%u|b%"name"]=>
    %unicode|string%(5) "value"
  }
}
array(3) {
  [%u|b%"foo"]=>
  %unicode|string%(4) "bar1"
  [%u|b%"_foo"]=>
  %unicode|string%(4) "bar2"
  [%u|b%"foo_"]=>
  %unicode|string%(4) "bar3"
}
Done

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to