explode1.phpt 9.9 KB

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