php-src/ext/standard/tests/strings/explode1.phpt

510 lines
9.9 KiB
PHP

--TEST--
Test explode() function
--INI--
error_reporting=2047
precision=14
--FILE--
<?php
/* Prototype: array explode ( string $delimiter, string $string [, int $limit] );
Description: Returns an array of strings, each of which is a substring of string
formed by splitting it on boundaries formed by the string delimiter.
If limit is set, the returned array will contain a maximum of limit
elements with the last element containing the rest of string.
*/
echo "*** Testing explode() for basic operations ***\n";
$delimiters = array (
"", // len=0
NULL,
"abcd", // string
0, // zero
"0",
TRUE, // boolean value
FALSE,
-1, // negative integer
-11.23, // double
4, // positive integer
"%",
);
$string = "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND";
/* loop prints an array of strings, each of which is a substring of $string
formed by splitting it on boundaries formed by the string $delimiter.
*/
$counter = 1;
foreach($delimiters as $delimiter) {
echo "-- Iteration $counter --\n";
var_dump( explode($delimiter, $string, -1) );
var_dump( explode($delimiter, $string, 0) );
var_dump( explode($delimiter, $string, 1) );
var_dump( explode($delimiter, $string, 2) );
$counter++;
}
echo "\n*** Testing explode() with miscelleneous input arguments ***\n";
echo "\n-- Passing positive values of Limit to explode() --\n";
/* LIMIT=2 */
var_dump( explode("::", "mon::tues::wed::thurs::fri::sat::sun", 2) );
/* checking for LIMIT =0,1 */
echo "\n-- Passing limit values 0 and 1 to explode() --\n";
var_dump( explode(":", "Name:Phone:Address:City:State", 0) );
var_dump( explode(":", "Name:Phone:Address:City:State", 1) );
/* to check the maximum limit of string that can be given with limit<=0,
default size is 50 but increases dynamically */
echo "\n*** Testing explode() for maximum limit of string with Limit = -1 ***\n";
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) );
echo "\n*** Testing explode() with string variations as input argument ***\n";
/* String with escape characters */
echo "\n-- Testing string with escape characters --\n";
var_dump( explode("\t\n", "1234\t\n5678\n\t9100") );
var_dump( explode("\r", "1234\rabcd\r5678\rrstu") );
/* String with embedded NULL */
echo "\n-- Testing string with embedded NULL --\n";
var_dump( explode("\x00", "abcd\x0n1234\x0005678\x0000efgh\xijkl") );
var_dump( explode("\0", "abcd\0efgh\0ijkl\x00mnop\x000qrst\00uvwx\000yz") );
/* Checking OBJECTS type */
echo "\n*** Testing explode() with objects ***\n";
class string1 {
public function __toString() {
return "Object";
}
}
$obj = new string1;
var_dump( explode("b", $obj) );
echo "\n*** Testing error conditions ***\n";
/* checking for arguments <2 and >3 */
var_dump( explode(":", "array1:array2:array3", -1, -33) );
var_dump( explode(":") );
echo "Done\n";
?>
--EXPECTF--
*** Testing explode() for basic operations ***
-- Iteration 1 --
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
-- Iteration 2 --
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
-- Iteration 3 --
array(1) {
[0]=>
string(10) "1234NULL23"
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(2) {
[0]=>
string(10) "1234NULL23"
[1]=>
string(43) "00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
-- Iteration 4 --
array(5) {
[0]=>
string(14) "1234NULL23abcd"
[1]=>
string(0) ""
[2]=>
string(0) ""
[3]=>
string(0) ""
[4]=>
string(0) ""
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(2) {
[0]=>
string(14) "1234NULL23abcd"
[1]=>
string(42) "0000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
-- Iteration 5 --
array(5) {
[0]=>
string(14) "1234NULL23abcd"
[1]=>
string(0) ""
[2]=>
string(0) ""
[3]=>
string(0) ""
[4]=>
string(0) ""
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(2) {
[0]=>
string(14) "1234NULL23abcd"
[1]=>
string(42) "0000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
-- Iteration 6 --
array(5) {
[0]=>
string(0) ""
[1]=>
string(28) "234NULL23abcd00000TRUEFALSE-"
[2]=>
string(0) ""
[3]=>
string(12) ".234444true-"
[4]=>
string(0) ""
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(2) {
[0]=>
string(0) ""
[1]=>
string(56) "234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
-- Iteration 7 --
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
-- Iteration 8 --
array(2) {
[0]=>
string(28) "1234NULL23abcd00000TRUEFALSE"
[1]=>
string(12) "1.234444true"
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(2) {
[0]=>
string(28) "1234NULL23abcd00000TRUEFALSE"
[1]=>
string(27) "1.234444true-11.24%PHP%ZEND"
}
-- Iteration 9 --
array(1) {
[0]=>
string(28) "1234NULL23abcd00000TRUEFALSE"
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(2) {
[0]=>
string(28) "1234NULL23abcd00000TRUEFALSE"
[1]=>
string(23) "4444true-11.24%PHP%ZEND"
}
-- Iteration 10 --
array(6) {
[0]=>
string(3) "123"
[1]=>
string(30) "NULL23abcd00000TRUEFALSE-11.23"
[2]=>
string(0) ""
[3]=>
string(0) ""
[4]=>
string(0) ""
[5]=>
string(9) "true-11.2"
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(2) {
[0]=>
string(3) "123"
[1]=>
string(53) "NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
-- Iteration 11 --
array(2) {
[0]=>
string(48) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24"
[1]=>
string(3) "PHP"
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(1) {
[0]=>
string(57) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
array(2) {
[0]=>
string(48) "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24"
[1]=>
string(8) "PHP%ZEND"
}
*** Testing explode() with miscelleneous input arguments ***
-- Passing positive values of Limit to explode() --
array(2) {
[0]=>
string(3) "mon"
[1]=>
string(31) "tues::wed::thurs::fri::sat::sun"
}
-- Passing limit values 0 and 1 to explode() --
array(1) {
[0]=>
string(29) "Name:Phone:Address:City:State"
}
array(1) {
[0]=>
string(29) "Name:Phone:Address:City:State"
}
*** Testing explode() for maximum limit of string with Limit = -1 ***
array(51) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
[3]=>
string(1) "4"
[4]=>
string(1) "5"
[5]=>
string(1) "6"
[6]=>
string(1) "7"
[7]=>
string(1) "7"
[8]=>
string(1) "5"
[9]=>
string(1) "6"
[10]=>
string(1) "7"
[11]=>
string(1) "3"
[12]=>
string(1) "4"
[13]=>
string(1) "5"
[14]=>
string(1) "2"
[15]=>
string(1) "8"
[16]=>
string(1) "9"
[17]=>
string(1) "0"
[18]=>
string(1) "5"
[19]=>
string(1) "5"
[20]=>
string(1) "5"
[21]=>
string(1) "5"
[22]=>
string(1) "5"
[23]=>
string(1) "5"
[24]=>
string(1) "5"
[25]=>
string(1) "5"
[26]=>
string(1) "5"
[27]=>
string(1) "5"
[28]=>
string(1) "5"
[29]=>
string(1) "5"
[30]=>
string(2) "55"
[31]=>
string(1) "5"
[32]=>
string(1) "5"
[33]=>
string(2) "5%"
[34]=>
string(1) "%"
[35]=>
string(1) "%"
[36]=>
string(1) "%"
[37]=>
string(1) "5"
[38]=>
string(1) "5"
[39]=>
string(1) "5"
[40]=>
string(1) "%"
[41]=>
string(1) "%"
[42]=>
string(1) "5"
[43]=>
string(1) "5"
[44]=>
string(1) "5"
[45]=>
string(1) "5"
[46]=>
string(2) "5%"
[47]=>
string(1) "%"
[48]=>
string(1) "%"
[49]=>
string(2) "55"
[50]=>
string(1) "1"
}
*** Testing explode() with string variations as input argument ***
-- Testing string with escape characters --
array(2) {
[0]=>
string(4) "1234"
[1]=>
string(10) "5678
9100"
}
array(4) {
[0]=>
string(4) "1234"
[1]=>
string(4) "abcd"
[2]=>
string(4) "5678"
[3]=>
string(4) "rstu"
}
-- Testing string with embedded NULL --
array(4) {
[0]=>
string(4) "abcd"
[1]=>
string(5) "n1234"
[2]=>
string(5) "05678"
[3]=>
string(12) "00efgh\xijkl"
}
array(7) {
[0]=>
string(4) "abcd"
[1]=>
string(4) "efgh"
[2]=>
string(4) "ijkl"
[3]=>
string(4) "mnop"
[4]=>
string(5) "0qrst"
[5]=>
string(4) "uvwx"
[6]=>
string(2) "yz"
}
*** Testing explode() with objects ***
array(2) {
[0]=>
string(1) "O"
[1]=>
string(4) "ject"
}
*** Testing error conditions ***
Warning: explode() expects at most 3 parameters, 4 given in %s on line %d
NULL
Warning: explode() expects at least 2 parameters, 1 given in %s on line %d
NULL
Done