parse_ini_string_001.phpt   [plain text]


--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 = \
;These chars have a special meaning when used in the value,
;  hence parser throws an error
;Non_alpha13 = & 
;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 = Hello@world
;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 = "Hello@world"
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_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] => Hello@world
    [Non_alpha_string1_quotes] => Hello@world
    [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_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] => Hello@world
        )

    [Non-alpha numerics in strings -with quotes] => Array
        (
            [Non_alpha_string1_quotes] => Hello@world
            [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 **