mirror of
https://github.com/php/php-src.git
synced 2024-10-19 15:34:25 +00:00
480 lines
12 KiB
Plaintext
480 lines
12 KiB
Plaintext
|
--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 = 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_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] => 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_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] => 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 **
|