Annotation of embedaddon/php/ext/standard/tests/strings/explode1.phpt, revision 1.1.1.1

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

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