Annotation of embedaddon/php/ext/standard/tests/general_functions/parse_ini_string_001.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Test parse_ini_string() function
                      3: --FILE--
                      4: <?php
                      5: /* Prototype: array parse_ini_string(string $string [,bool $process_sections]);
                      6:    Description: parse_ini_string() loads in the ini file specified in filename,
                      7:      and returns the settings in it in an associative array. 
                      8: */
                      9: 
                     10: $parse_string = <<<EOD
                     11: ; Comment starts with semi-colon(;)
                     12: ; Section starts with [<section name>]
                     13: 
                     14: ; start of ini file
                     15: 
                     16: [Constans]
                     17: one = 1
                     18: five = 5
                     19: animal = BIRD
                     20: Language = PHP
                     21: PHP_CONSTANT = 1.2345678
                     22: 10 = Ten
                     23: HELLO = HELLO
                     24: 
                     25: [date]
                     26: date = 
                     27: time =
                     28: 
                     29: [paths]
                     30: path = /usr/local/bin
                     31: URL = http://www.php.net
                     32: 
                     33: [Decimal]
                     34: Decimal_value1 = 100
                     35: Decimal_value2 = -100
                     36: Decimal_value3 = -2147483647
                     37: Decimal_value4 = 2147483647
                     38: Decimal_value5 = -2147483648
                     39: Decimal_value6 = 2147483648
                     40: 
                     41: [Octal]
                     42: Octal_value = 0100
                     43: 
                     44: [Hex]
                     45: Hex_value1 = 0x101
                     46: Hex_Value2 = 0x102
                     47: Hex_Value2 = 0x103
                     48: 
                     49: [Non-alphanumerics_as_values]
                     50: ;Non-alpha numeric chars without quotes
                     51: Non_alpha1 = ;
                     52: Non_alpha2 = +
                     53: Non_alpha3 = *
                     54: Non_alpha4 = %
                     55: Non_alpha5 = <>
                     56: Non_alpha6 = @
                     57: Non_alpha7 = #
                     58: Non_alpha8 = ^
                     59: Non_alpha9 = -
                     60: Non_alpha10 = :
                     61: Non_alpha11 = ?
                     62: Non_alpha12 = /
                     63: Non_alpha13 = \
                     64: ;These chars have a special meaning when used in the value,
                     65: ;  hence parser throws an error
                     66: ;Non_alpha14 = & 
                     67: ;Non_alpha15 = {}
                     68: ;Non_alpha16 = |
                     69: ;Non_alpha17 = ~
                     70: ;Non_alpha18 = !
                     71: ;Non_alpha19 = $
                     72: ;Non_alpha20 = () 
                     73: 
                     74: Non_alpha1_quotes = ";"
                     75: Non_alpha2_quotes = "+"
                     76: Non_alpha3_quotes = "*"
                     77: Non_alpha4_quotes = "%"
                     78: Non_alpha5_quotes = "<>"
                     79: Non_alpha6_quotes = "@"
                     80: Non_alpha7_quotes = "#"
                     81: Non_alpha8_quotes = "^"
                     82: Non_alpha9_quotes = "-"
                     83: Non_alpha10_quotes = "="
                     84: Non_alpha11_quotes = ":"
                     85: Non_alpha12_quotes = "?"
                     86: Non_alpha13_quotes = "/"
                     87: ;Non_alpha14_quotes = "\"
                     88: Non_alpha15_quotes = "&"
                     89: Non_alpha16_quotes = "{}"
                     90: Non_alpha17_quotes = "|"
                     91: Non_alpha18_quotes = "~"
                     92: Non_alpha19_quotes = "!"
                     93: ;Non_alpha20_quotes = "$"
                     94: Non_alpha21_quotes = "()"
                     95: 
                     96: [Non-alpha numerics in strings]
                     97: ;expected error, as the non-alphanumeric chars not enclosed in double quotes("")
                     98: Non_alpha_string1 = Hello@world
                     99: ;Non_alpha_string2 = Hello!world
                    100: ;Non_alpha_string3 = Hello#world
                    101: ;Non_alpha_string4 = Hello%world
                    102: ;Non_alpha_string5 = Hello&world
                    103: ;Non_alpha_string6 = Hello*world
                    104: ;Non_alpha_string7 = Hello+world
                    105: ;Non_alpha_string8 = Hello-world
                    106: ;Non_alpha_string9 = Hello'world
                    107: ;Non_alpha_string10 = Hello:world
                    108: ;Non_alpha_string11 = Hello;world
                    109: ;Non_alpha_string12 = Hello<world
                    110: ;Non_alpha_string13 = Hello>world
                    111: ;Non_alpha_string14 = Hello>world
                    112: ;Non_alpha_string15 = Hello?world
                    113: ;Non_alpha_string16 = Hello\world
                    114: ;Non_alpha_string17 = Hello^world
                    115: ;Non_alpha_string18 = Hello_world
                    116: ;Non_alpha_string19 = Hello|world
                    117: ;Non_alpha_string20 = Hello~world
                    118: ;Non_alpha_string21 = Hello`world
                    119: ;Non_alpha_string22 = Hello(world)
                    120: 
                    121: [Non-alpha numerics in strings -with quotes]
                    122: Non_alpha_string1_quotes = "Hello@world"
                    123: Non_alpha_string2_quotes = "Hello!world"
                    124: Non_alpha_string3_quotes = "Hello#world"
                    125: Non_alpha_string4_quotes = "Hello&world"
                    126: Non_alpha_string5_quotes = "Hello*world"
                    127: Non_alpha_string6_quotes = "Hello+world"
                    128: Non_alpha_string7_quotes = "Hello-world"
                    129: Non_alpha_string8_quotes = "Hello'world"
                    130: Non_alpha_string9_quotes = "Hello:world"
                    131: Non_alpha_string10_quotes = "Hello;world"
                    132: Non_alpha_string11_quotes = "Hello<world"
                    133: Non_alpha_string12_quotes = "Hello>world"
                    134: Non_alpha_string13_quotes = "Hello>world"
                    135: Non_alpha_string14_quotes = "Hello?world"
                    136: Non_alpha_string15_quotes = "Hello\world"
                    137: Non_alpha_string16_quotes = "Hello^world"
                    138: Non_alpha_string17_quotes = "Hello_world"
                    139: Non_alpha_string18_quotes = "Hello|world"
                    140: Non_alpha_string19_quotes = "Hello~world"
                    141: Non_alpha_string20_quotes = "Hello`world"
                    142: Non_alpha_string21_quotes = "Hello(world)"
                    143: 
                    144: [Newlines_in_Values]
                    145: String1 = "Hello, world\nGood Morning"
                    146: String2 = "\nHello, world
                    147:              Good Morning\n"
                    148: String3 = 'Hello, world\tGood Morning'
                    149: String4 = "\n"
                    150: String5 = "\n\n"
                    151: String6 = Hello, world\tGood Morning
                    152: 
                    153: [ReservedKeys_as_Values]
                    154: Key1 = YES
                    155: Key2 = Yes
                    156: Key3 = yEs
                    157: Key4 = NO
                    158: Key5 = No
                    159: Key6 = nO
                    160: Key7 = TRUE
                    161: Key8 = True
                    162: Key9 = tRUE
                    163: Key10 = true
                    164: Key11 = FALSE
                    165: Key12 = False
                    166: Key13 = false
                    167: Key14 = fAlSE
                    168: Key15 = NULL
                    169: Key16 = Null
                    170: Key17 = nuLL
                    171: Key18 = null
                    172: 
                    173: [ReservedKeys_as_Keys] 
                    174: ; Expected:error, reserved key words must not be used as keys for ini file
                    175: ;YES = 1
                    176: ;Yes = 2
                    177: ;yEs = 1.2
                    178: ;YES = YES
                    179: ;NO = ""
                    180: ;No = "string"
                    181: ;nO = "\0"
                    182: ;TRUE = 1.1
                    183: ;True = 1
                    184: ;tRUE = 5
                    185: ;true = TRUE
                    186: ;FALSE = FALSE
                    187: ;False = ""
                    188: ;false = "hello"
                    189: ;fAlSE = ""
                    190: ;NULL = ""
                    191: ;Null = 0
                    192: ;nuLL = "\0"
                    193: ;null = NULL
                    194: 
                    195: ; end of ini file
                    196: EOD;
                    197: 
                    198: echo "*** Test parse_ini_string() function:  with various keys and values given in string ***\n";
                    199: echo "-- ini string without process_sections optional arg --\n";
                    200: define('BIRD', 'Humming bird');
                    201: $ini_array = parse_ini_string($parse_string);
                    202: print_r($ini_array);
                    203: 
                    204: echo "\n-- ini string with process_sections as TRUE --\n";
                    205: $ini_array = parse_ini_string($parse_string, TRUE);
                    206: print_r($ini_array);
                    207: 
                    208: echo "*** Done **\n";
                    209: ?>
                    210: --EXPECTF--
                    211: *** Test parse_ini_string() function:  with various keys and values given in string ***
                    212: -- ini string without process_sections optional arg --
                    213: Array
                    214: (
                    215:     [one] => 1
                    216:     [five] => 5
                    217:     [animal] => Humming bird
                    218:     [Language] => PHP
                    219:     [PHP_CONSTANT] => 1.2345678
                    220:     [10] => Ten
                    221:     [HELLO] => HELLO
                    222:     [date] => 
                    223:     [time] => 
                    224:     [path] => /usr/local/bin
                    225:     [URL] => http://www.php.net
                    226:     [Decimal_value1] => 100
                    227:     [Decimal_value2] => -100
                    228:     [Decimal_value3] => -2147483647
                    229:     [Decimal_value4] => 2147483647
                    230:     [Decimal_value5] => -2147483648
                    231:     [Decimal_value6] => 2147483648
                    232:     [Octal_value] => 0100
                    233:     [Hex_value1] => 0x101
                    234:     [Hex_Value2] => 0x103
                    235:     [Non_alpha1] => 
                    236:     [Non_alpha2] => +
                    237:     [Non_alpha3] => *
                    238:     [Non_alpha4] => %
                    239:     [Non_alpha5] => <>
                    240:     [Non_alpha6] => @
                    241:     [Non_alpha7] => #
                    242:     [Non_alpha8] => ^
                    243:     [Non_alpha9] => -
                    244:     [Non_alpha10] => :
                    245:     [Non_alpha11] => ?
                    246:     [Non_alpha12] => /
                    247:     [Non_alpha13] => \
                    248:     [Non_alpha1_quotes] => ;
                    249:     [Non_alpha2_quotes] => +
                    250:     [Non_alpha3_quotes] => *
                    251:     [Non_alpha4_quotes] => %
                    252:     [Non_alpha5_quotes] => <>
                    253:     [Non_alpha6_quotes] => @
                    254:     [Non_alpha7_quotes] => #
                    255:     [Non_alpha8_quotes] => ^
                    256:     [Non_alpha9_quotes] => -
                    257:     [Non_alpha10_quotes] => =
                    258:     [Non_alpha11_quotes] => :
                    259:     [Non_alpha12_quotes] => ?
                    260:     [Non_alpha13_quotes] => /
                    261:     [Non_alpha15_quotes] => &
                    262:     [Non_alpha16_quotes] => {}
                    263:     [Non_alpha17_quotes] => |
                    264:     [Non_alpha18_quotes] => ~
                    265:     [Non_alpha19_quotes] => !
                    266:     [Non_alpha21_quotes] => ()
                    267:     [Non_alpha_string1] => Hello@world
                    268:     [Non_alpha_string1_quotes] => Hello@world
                    269:     [Non_alpha_string2_quotes] => Hello!world
                    270:     [Non_alpha_string3_quotes] => Hello#world
                    271:     [Non_alpha_string4_quotes] => Hello&world
                    272:     [Non_alpha_string5_quotes] => Hello*world
                    273:     [Non_alpha_string6_quotes] => Hello+world
                    274:     [Non_alpha_string7_quotes] => Hello-world
                    275:     [Non_alpha_string8_quotes] => Hello'world
                    276:     [Non_alpha_string9_quotes] => Hello:world
                    277:     [Non_alpha_string10_quotes] => Hello;world
                    278:     [Non_alpha_string11_quotes] => Hello<world
                    279:     [Non_alpha_string12_quotes] => Hello>world
                    280:     [Non_alpha_string13_quotes] => Hello>world
                    281:     [Non_alpha_string14_quotes] => Hello?world
                    282:     [Non_alpha_string15_quotes] => Hello\world
                    283:     [Non_alpha_string16_quotes] => Hello^world
                    284:     [Non_alpha_string17_quotes] => Hello_world
                    285:     [Non_alpha_string18_quotes] => Hello|world
                    286:     [Non_alpha_string19_quotes] => Hello~world
                    287:     [Non_alpha_string20_quotes] => Hello`world
                    288:     [Non_alpha_string21_quotes] => Hello(world)
                    289:     [String1] => Hello, world
                    290: Good Morning
                    291:     [String2] => 
                    292: Hello, world
                    293:              Good Morning
                    294: 
                    295:     [String3] => Hello, world  Good Morning
                    296:     [String4] => 
                    297: 
                    298:     [String5] => 
                    299: 
                    300: 
                    301:     [String6] => Hello, world  Good Morning
                    302:     [Key1] => 1
                    303:     [Key2] => 1
                    304:     [Key3] => 1
                    305:     [Key4] => 
                    306:     [Key5] => 
                    307:     [Key6] => 
                    308:     [Key7] => 1
                    309:     [Key8] => 1
                    310:     [Key9] => 1
                    311:     [Key10] => 1
                    312:     [Key11] => 
                    313:     [Key12] => 
                    314:     [Key13] => 
                    315:     [Key14] => 
                    316:     [Key15] => 
                    317:     [Key16] => 
                    318:     [Key17] => 
                    319:     [Key18] => 
                    320: )
                    321: 
                    322: -- ini string with process_sections as TRUE --
                    323: Array
                    324: (
                    325:     [Constans] => Array
                    326:         (
                    327:             [one] => 1
                    328:             [five] => 5
                    329:             [animal] => Humming bird
                    330:             [Language] => PHP
                    331:             [PHP_CONSTANT] => 1.2345678
                    332:             [10] => Ten
                    333:             [HELLO] => HELLO
                    334:         )
                    335: 
                    336:     [date] => Array
                    337:         (
                    338:             [date] => 
                    339:             [time] => 
                    340:         )
                    341: 
                    342:     [paths] => Array
                    343:         (
                    344:             [path] => /usr/local/bin
                    345:             [URL] => http://www.php.net
                    346:         )
                    347: 
                    348:     [Decimal] => Array
                    349:         (
                    350:             [Decimal_value1] => 100
                    351:             [Decimal_value2] => -100
                    352:             [Decimal_value3] => -2147483647
                    353:             [Decimal_value4] => 2147483647
                    354:             [Decimal_value5] => -2147483648
                    355:             [Decimal_value6] => 2147483648
                    356:         )
                    357: 
                    358:     [Octal] => Array
                    359:         (
                    360:             [Octal_value] => 0100
                    361:         )
                    362: 
                    363:     [Hex] => Array
                    364:         (
                    365:             [Hex_value1] => 0x101
                    366:             [Hex_Value2] => 0x103
                    367:         )
                    368: 
                    369:     [Non-alphanumerics_as_values] => Array
                    370:         (
                    371:             [Non_alpha1] => 
                    372:             [Non_alpha2] => +
                    373:             [Non_alpha3] => *
                    374:             [Non_alpha4] => %
                    375:             [Non_alpha5] => <>
                    376:             [Non_alpha6] => @
                    377:             [Non_alpha7] => #
                    378:             [Non_alpha8] => ^
                    379:             [Non_alpha9] => -
                    380:             [Non_alpha10] => :
                    381:             [Non_alpha11] => ?
                    382:             [Non_alpha12] => /
                    383:             [Non_alpha13] => \
                    384:             [Non_alpha1_quotes] => ;
                    385:             [Non_alpha2_quotes] => +
                    386:             [Non_alpha3_quotes] => *
                    387:             [Non_alpha4_quotes] => %
                    388:             [Non_alpha5_quotes] => <>
                    389:             [Non_alpha6_quotes] => @
                    390:             [Non_alpha7_quotes] => #
                    391:             [Non_alpha8_quotes] => ^
                    392:             [Non_alpha9_quotes] => -
                    393:             [Non_alpha10_quotes] => =
                    394:             [Non_alpha11_quotes] => :
                    395:             [Non_alpha12_quotes] => ?
                    396:             [Non_alpha13_quotes] => /
                    397:             [Non_alpha15_quotes] => &
                    398:             [Non_alpha16_quotes] => {}
                    399:             [Non_alpha17_quotes] => |
                    400:             [Non_alpha18_quotes] => ~
                    401:             [Non_alpha19_quotes] => !
                    402:             [Non_alpha21_quotes] => ()
                    403:         )
                    404: 
                    405:     [Non-alpha numerics in strings] => Array
                    406:         (
                    407:             [Non_alpha_string1] => Hello@world
                    408:         )
                    409: 
                    410:     [Non-alpha numerics in strings -with quotes] => Array
                    411:         (
                    412:             [Non_alpha_string1_quotes] => Hello@world
                    413:             [Non_alpha_string2_quotes] => Hello!world
                    414:             [Non_alpha_string3_quotes] => Hello#world
                    415:             [Non_alpha_string4_quotes] => Hello&world
                    416:             [Non_alpha_string5_quotes] => Hello*world
                    417:             [Non_alpha_string6_quotes] => Hello+world
                    418:             [Non_alpha_string7_quotes] => Hello-world
                    419:             [Non_alpha_string8_quotes] => Hello'world
                    420:             [Non_alpha_string9_quotes] => Hello:world
                    421:             [Non_alpha_string10_quotes] => Hello;world
                    422:             [Non_alpha_string11_quotes] => Hello<world
                    423:             [Non_alpha_string12_quotes] => Hello>world
                    424:             [Non_alpha_string13_quotes] => Hello>world
                    425:             [Non_alpha_string14_quotes] => Hello?world
                    426:             [Non_alpha_string15_quotes] => Hello\world
                    427:             [Non_alpha_string16_quotes] => Hello^world
                    428:             [Non_alpha_string17_quotes] => Hello_world
                    429:             [Non_alpha_string18_quotes] => Hello|world
                    430:             [Non_alpha_string19_quotes] => Hello~world
                    431:             [Non_alpha_string20_quotes] => Hello`world
                    432:             [Non_alpha_string21_quotes] => Hello(world)
                    433:         )
                    434: 
                    435:     [Newlines_in_Values] => Array
                    436:         (
                    437:             [String1] => Hello, world
                    438: Good Morning
                    439:             [String2] => 
                    440: Hello, world
                    441:              Good Morning
                    442: 
                    443:             [String3] => Hello, world  Good Morning
                    444:             [String4] => 
                    445: 
                    446:             [String5] => 
                    447: 
                    448: 
                    449:             [String6] => Hello, world  Good Morning
                    450:         )
                    451: 
                    452:     [ReservedKeys_as_Values] => Array
                    453:         (
                    454:             [Key1] => 1
                    455:             [Key2] => 1
                    456:             [Key3] => 1
                    457:             [Key4] => 
                    458:             [Key5] => 
                    459:             [Key6] => 
                    460:             [Key7] => 1
                    461:             [Key8] => 1
                    462:             [Key9] => 1
                    463:             [Key10] => 1
                    464:             [Key11] => 
                    465:             [Key12] => 
                    466:             [Key13] => 
                    467:             [Key14] => 
                    468:             [Key15] => 
                    469:             [Key16] => 
                    470:             [Key17] => 
                    471:             [Key18] => 
                    472:         )
                    473: 
                    474:     [ReservedKeys_as_Keys] => Array
                    475:         (
                    476:         )
                    477: 
                    478: )
                    479: *** Done **

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>