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