explode1.phpt 9.3 KB

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