Return to explode1.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / strings |
1.1 misho 1: --TEST-- 2: Test explode() function 3: --INI-- 4: error_reporting=2047 5: precision=14 6: --FILE-- 7: <?php 8: /* Prototype: array explode ( string $delimiter, string $string [, int $limit] ); 9: Description: Returns an array of strings, each of which is a substring of string 10: formed by splitting it on boundaries formed by the string delimiter. 11: If limit is set, the returned array will contain a maximum of limit 12: elements with the last element containing the rest of string. 13: */ 14: 15: echo "*** Testing explode() for basic operations ***\n"; 16: $delimiters = array ( 17: "", // len=0 18: NULL, 19: "abcd", // string 20: 0, // zero 21: "0", 22: TRUE, // boolean value 23: FALSE, 24: -1, // negative integer 25: -11.23, // double 26: 4, // positive integer 27: "%", 28: ); 29: $string = "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"; 30: /* loop prints an array of strings, each of which is a substring of $string 31: formed by splitting it on boundaries formed by the string $delimiter. 32: */ 33: $counter = 1; 34: foreach($delimiters as $delimiter) { 35: echo "-- Iteration $counter --\n"; 36: var_dump( explode($delimiter, $string, -1) ); 37: var_dump( explode($delimiter, $string, 0) ); 38: var_dump( explode($delimiter, $string, 1) ); 39: var_dump( explode($delimiter, $string, 2) ); 40: $counter++; 41: } 42: 43: echo "\n*** Testing explode() with miscelleneous input arguments ***\n"; 44: 45: echo "\n-- Passing positive values of Limit to explode() --\n"; 46: /* LIMIT=2 */ 47: var_dump( explode("::", "mon::tues::wed::thurs::fri::sat::sun", 2) ); 48: 49: /* checking for LIMIT =0,1 */ 50: echo "\n-- Passing limit values 0 and 1 to explode() --\n"; 51: var_dump( explode(":", "Name:Phone:Address:City:State", 0) ); 52: var_dump( explode(":", "Name:Phone:Address:City:State", 1) ); 53: 54: /* to check the maximum limit of string that can be given with limit<=0, 55: default size is 50 but increases dynamically */ 56: echo "\n*** Testing explode() for maximum limit of string with Limit = -1 ***\n"; 57: var_dump( explode(":", "1:2:3:4:5:6:7:7:5:6:7:3:4:5:2:8:9:0:5:5:5:5:5:5:5:5:5:5:5:5:55:5:5:5%:%:%:%:5:5:5:%:%:5:5:5:5:5%:%:%:55:1:1", -1) ); 58: 59: echo "\n*** Testing explode() with string variations as input argument ***\n"; 60: /* String with escape characters */ 61: echo "\n-- Testing string with escape characters --\n"; 62: var_dump( explode("\t\n", "1234\t\n5678\n\t9100") ); 63: var_dump( explode("\r", "1234\rabcd\r5678\rrstu") ); 64: 65: /* String with embedded NULL */ 66: echo "\n-- Testing string with embedded NULL --\n"; 67: var_dump( explode("\x00", "abcd\x0n1234\x0005678\x0000efgh\xijkl") ); 68: var_dump( explode("\0", "abcd\0efgh\0ijkl\x00mnop\x000qrst\00uvwx\000yz") ); 69: 70: /* Checking OBJECTS type */ 71: echo "\n*** Testing explode() with objects ***\n"; 72: class string1 { 73: public function __toString() { 74: return "Object"; 75: } 76: } 77: $obj = new string1; 78: var_dump( explode("b", $obj) ); 79: 80: echo "\n*** Testing error conditions ***\n"; 81: /* checking for arguments <2 and >3 */ 82: var_dump( explode(":", "array1:array2:array3", -1, -33) ); 83: var_dump( explode(":") ); 84: 85: echo "Done\n"; 86: ?> 87: --EXPECTF-- 88: *** Testing explode() for basic operations *** 89: -- Iteration 1 -- 90: 91: Warning: explode(): Empty delimiter in %s on line %d 92: bool(false) 93: 94: Warning: explode(): Empty delimiter in %s on line %d 95: bool(false) 96: 97: Warning: explode(): Empty delimiter in %s on line %d 98: bool(false) 99: 100: Warning: explode(): Empty delimiter in %s on line %d 101: bool(false) 102: -- Iteration 2 -- 103: 104: Warning: explode(): Empty delimiter in %s on line %d 105: bool(false) 106: 107: Warning: explode(): Empty delimiter in %s on line %d 108: bool(false) 109: 110: Warning: explode(): Empty delimiter in %s on line %d 111: bool(false) 112: 113: Warning: explode(): Empty delimiter in %s on line %d 114: bool(false) 115: -- Iteration 3 -- 116: array(1) { 117: [0]=> 118: string(10) "1234NULL23" 119: } 120: array(1) { 121: [0]=> 122: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 123: } 124: array(1) { 125: [0]=> 126: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 127: } 128: array(2) { 129: [0]=> 130: string(10) "1234NULL23" 131: [1]=> 132: string(43) "00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 133: } 134: -- Iteration 4 -- 135: array(5) { 136: [0]=> 137: string(14) "1234NULL23abcd" 138: [1]=> 139: string(0) "" 140: [2]=> 141: string(0) "" 142: [3]=> 143: string(0) "" 144: [4]=> 145: string(0) "" 146: } 147: array(1) { 148: [0]=> 149: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 150: } 151: array(1) { 152: [0]=> 153: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 154: } 155: array(2) { 156: [0]=> 157: string(14) "1234NULL23abcd" 158: [1]=> 159: string(42) "0000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 160: } 161: -- Iteration 5 -- 162: array(5) { 163: [0]=> 164: string(14) "1234NULL23abcd" 165: [1]=> 166: string(0) "" 167: [2]=> 168: string(0) "" 169: [3]=> 170: string(0) "" 171: [4]=> 172: string(0) "" 173: } 174: array(1) { 175: [0]=> 176: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 177: } 178: array(1) { 179: [0]=> 180: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 181: } 182: array(2) { 183: [0]=> 184: string(14) "1234NULL23abcd" 185: [1]=> 186: string(42) "0000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 187: } 188: -- Iteration 6 -- 189: array(5) { 190: [0]=> 191: string(0) "" 192: [1]=> 193: string(28) "234NULL23abcd00000TRUEFALSE-" 194: [2]=> 195: string(0) "" 196: [3]=> 197: string(12) ".234444true-" 198: [4]=> 199: string(0) "" 200: } 201: array(1) { 202: [0]=> 203: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 204: } 205: array(1) { 206: [0]=> 207: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 208: } 209: array(2) { 210: [0]=> 211: string(0) "" 212: [1]=> 213: string(56) "234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 214: } 215: -- Iteration 7 -- 216: 217: Warning: explode(): Empty delimiter in %s on line %d 218: bool(false) 219: 220: Warning: explode(): Empty delimiter in %s on line %d 221: bool(false) 222: 223: Warning: explode(): Empty delimiter in %s on line %d 224: bool(false) 225: 226: Warning: explode(): Empty delimiter in %s on line %d 227: bool(false) 228: -- Iteration 8 -- 229: array(2) { 230: [0]=> 231: string(28) "1234NULL23abcd00000TRUEFALSE" 232: [1]=> 233: string(12) "1.234444true" 234: } 235: array(1) { 236: [0]=> 237: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 238: } 239: array(1) { 240: [0]=> 241: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 242: } 243: array(2) { 244: [0]=> 245: string(28) "1234NULL23abcd00000TRUEFALSE" 246: [1]=> 247: string(27) "1.234444true-11.24%PHP%ZEND" 248: } 249: -- Iteration 9 -- 250: array(1) { 251: [0]=> 252: string(28) "1234NULL23abcd00000TRUEFALSE" 253: } 254: array(1) { 255: [0]=> 256: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 257: } 258: array(1) { 259: [0]=> 260: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 261: } 262: array(2) { 263: [0]=> 264: string(28) "1234NULL23abcd00000TRUEFALSE" 265: [1]=> 266: string(23) "4444true-11.24%PHP%ZEND" 267: } 268: -- Iteration 10 -- 269: array(6) { 270: [0]=> 271: string(3) "123" 272: [1]=> 273: string(30) "NULL23abcd00000TRUEFALSE-11.23" 274: [2]=> 275: string(0) "" 276: [3]=> 277: string(0) "" 278: [4]=> 279: string(0) "" 280: [5]=> 281: string(9) "true-11.2" 282: } 283: array(1) { 284: [0]=> 285: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 286: } 287: array(1) { 288: [0]=> 289: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 290: } 291: array(2) { 292: [0]=> 293: string(3) "123" 294: [1]=> 295: string(53) "NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 296: } 297: -- Iteration 11 -- 298: array(2) { 299: [0]=> 300: string(48) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24" 301: [1]=> 302: string(3) "PHP" 303: } 304: array(1) { 305: [0]=> 306: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 307: } 308: array(1) { 309: [0]=> 310: string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND" 311: } 312: array(2) { 313: [0]=> 314: string(48) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24" 315: [1]=> 316: string(8) "PHP%ZEND" 317: } 318: 319: *** Testing explode() with miscelleneous input arguments *** 320: 321: -- Passing positive values of Limit to explode() -- 322: array(2) { 323: [0]=> 324: string(3) "mon" 325: [1]=> 326: string(31) "tues::wed::thurs::fri::sat::sun" 327: } 328: 329: -- Passing limit values 0 and 1 to explode() -- 330: array(1) { 331: [0]=> 332: string(29) "Name:Phone:Address:City:State" 333: } 334: array(1) { 335: [0]=> 336: string(29) "Name:Phone:Address:City:State" 337: } 338: 339: *** Testing explode() for maximum limit of string with Limit = -1 *** 340: array(51) { 341: [0]=> 342: string(1) "1" 343: [1]=> 344: string(1) "2" 345: [2]=> 346: string(1) "3" 347: [3]=> 348: string(1) "4" 349: [4]=> 350: string(1) "5" 351: [5]=> 352: string(1) "6" 353: [6]=> 354: string(1) "7" 355: [7]=> 356: string(1) "7" 357: [8]=> 358: string(1) "5" 359: [9]=> 360: string(1) "6" 361: [10]=> 362: string(1) "7" 363: [11]=> 364: string(1) "3" 365: [12]=> 366: string(1) "4" 367: [13]=> 368: string(1) "5" 369: [14]=> 370: string(1) "2" 371: [15]=> 372: string(1) "8" 373: [16]=> 374: string(1) "9" 375: [17]=> 376: string(1) "0" 377: [18]=> 378: string(1) "5" 379: [19]=> 380: string(1) "5" 381: [20]=> 382: string(1) "5" 383: [21]=> 384: string(1) "5" 385: [22]=> 386: string(1) "5" 387: [23]=> 388: string(1) "5" 389: [24]=> 390: string(1) "5" 391: [25]=> 392: string(1) "5" 393: [26]=> 394: string(1) "5" 395: [27]=> 396: string(1) "5" 397: [28]=> 398: string(1) "5" 399: [29]=> 400: string(1) "5" 401: [30]=> 402: string(2) "55" 403: [31]=> 404: string(1) "5" 405: [32]=> 406: string(1) "5" 407: [33]=> 408: string(2) "5%" 409: [34]=> 410: string(1) "%" 411: [35]=> 412: string(1) "%" 413: [36]=> 414: string(1) "%" 415: [37]=> 416: string(1) "5" 417: [38]=> 418: string(1) "5" 419: [39]=> 420: string(1) "5" 421: [40]=> 422: string(1) "%" 423: [41]=> 424: string(1) "%" 425: [42]=> 426: string(1) "5" 427: [43]=> 428: string(1) "5" 429: [44]=> 430: string(1) "5" 431: [45]=> 432: string(1) "5" 433: [46]=> 434: string(2) "5%" 435: [47]=> 436: string(1) "%" 437: [48]=> 438: string(1) "%" 439: [49]=> 440: string(2) "55" 441: [50]=> 442: string(1) "1" 443: } 444: 445: *** Testing explode() with string variations as input argument *** 446: 447: -- Testing string with escape characters -- 448: array(2) { 449: [0]=> 450: string(4) "1234" 451: [1]=> 452: string(10) "5678 453: 9100" 454: } 455: array(4) { 456: [0]=> 457: string(4) "1234" 458: [1]=> 459: string(4) "abcd" 460: [2]=> 461: string(4) "5678" 462: [3]=> 463: string(4) "rstu" 464: } 465: 466: -- Testing string with embedded NULL -- 467: array(4) { 468: [0]=> 469: string(4) "abcd" 470: [1]=> 471: string(5) "n1234" 472: [2]=> 473: string(5) "05678" 474: [3]=> 475: string(12) "00efgh\xijkl" 476: } 477: array(7) { 478: [0]=> 479: string(4) "abcd" 480: [1]=> 481: string(4) "efgh" 482: [2]=> 483: string(4) "ijkl" 484: [3]=> 485: string(4) "mnop" 486: [4]=> 487: string(5) "0qrst" 488: [5]=> 489: string(4) "uvwx" 490: [6]=> 491: string(2) "yz" 492: } 493: 494: *** Testing explode() with objects *** 495: array(2) { 496: [0]=> 497: string(1) "O" 498: [1]=> 499: string(4) "ject" 500: } 501: 502: *** Testing error conditions *** 503: 504: Warning: explode() expects at most 3 parameters, 4 given in %s on line %d 505: NULL 506: 507: Warning: explode() expects at least 2 parameters, 1 given in %s on line %d 508: NULL 509: Done