fgetcsv_variation24.phpt 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671
  1. --TEST--
  2. Test fgetcsv() : usage variations - two chars as enclosure & delimiter (various write modes)
  3. --FILE--
  4. <?php
  5. /*
  6. Prototype: array fgetcsv ( resource $handle [, int $length [, string $delimiter [, string $enclosure]]] );
  7. Description: Gets line from file pointer and parse for CSV fields
  8. */
  9. /*
  10. Testing fgetcsv() to read from a file opened in various write modes and
  11. enclosure argument with two characters
  12. */
  13. echo "*** Testing fgetcsv() : with two chars as enclosure & delimiter ***\n";
  14. /* the array is with three elements in it. Each element should be read as
  15. 1st element is delimiter, 2nd element is enclosure
  16. and 3rd element is csv fields
  17. */
  18. $csv_lists = array (
  19. array(',', '"', '"water",fruit'),
  20. array(',', '"', '"water","fruit"'),
  21. array(' ', '^', '^water^ ^fruit^'),
  22. array(':', '&', '&water&:&fruit&'),
  23. array('=', '=', '=water===fruit='),
  24. array('-', '-', '-water--fruit-air'),
  25. array('-', '-', '-water---fruit---air-'),
  26. array(':', '&', '&""""&:&"&:,:":&,&:,,,,')
  27. );
  28. $filename = dirname(__FILE__) . '/fgetcsv_variation24.tmp';
  29. @unlink($filename);
  30. $file_modes = array ("w+", "w+b", "w+t",
  31. "x+", "x+b", "x+t");
  32. $loop_counter = 1;
  33. foreach ($csv_lists as $csv_list) {
  34. for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) {
  35. // create the file and add the content with has csv fields
  36. if ( strstr($file_modes[$mode_counter], "r") ) {
  37. $file_handle = fopen($filename, "w");
  38. } else {
  39. $file_handle = fopen($filename, $file_modes[$mode_counter] );
  40. }
  41. if ( !$file_handle ) {
  42. echo "Error: failed to create file $filename!\n";
  43. exit();
  44. }
  45. $delimiter = $csv_list[0];
  46. $enclosure = $csv_list[1];
  47. $csv_field = $csv_list[2];
  48. fwrite($file_handle, $csv_field . "\n");
  49. // write another line of text and a blank line
  50. // this will be used to test, if the fgetcsv() read more than a line and its
  51. // working when only a blank line is read
  52. fwrite($file_handle, "This is line of text without csv fields\n");
  53. fwrite($file_handle, "\n"); // blank line
  54. // close the file if the mode to be used is read mode and re-open using read mode
  55. // else rewind the file pointer to beginning of the file
  56. if ( strstr($file_modes[$mode_counter], "r" ) ) {
  57. fclose($file_handle);
  58. $file_handle = fopen($filename, $file_modes[$mode_counter]);
  59. } else {
  60. // rewind the file pointer to bof
  61. rewind($file_handle);
  62. }
  63. echo "\n-- Testing fgetcsv() with file opened using $file_modes[$mode_counter] mode --\n";
  64. // call fgetcsv() to parse csv fields
  65. // use delimiter & enclosure char of two chars
  66. fseek($file_handle, 0, SEEK_SET);
  67. $del = "++";
  68. $enc = "%%";
  69. var_dump( fgetcsv($file_handle, 1024, $del, $enc) );
  70. // check the file pointer position and if eof
  71. var_dump( ftell($file_handle) );
  72. var_dump( feof($file_handle) );
  73. // close the file
  74. fclose($file_handle);
  75. //delete file
  76. unlink($filename);
  77. } //end of mode loop
  78. } // end of foreach
  79. echo "Done\n";
  80. ?>
  81. --EXPECTF--
  82. *** Testing fgetcsv() : with two chars as enclosure & delimiter ***
  83. -- Testing fgetcsv() with file opened using w+ mode --
  84. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  85. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  86. array(1) {
  87. [0]=>
  88. string(13) ""water",fruit"
  89. }
  90. int(14)
  91. bool(false)
  92. -- Testing fgetcsv() with file opened using w+b mode --
  93. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  94. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  95. array(1) {
  96. [0]=>
  97. string(13) ""water",fruit"
  98. }
  99. int(14)
  100. bool(false)
  101. -- Testing fgetcsv() with file opened using w+t mode --
  102. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  103. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  104. array(1) {
  105. [0]=>
  106. string(13) ""water",fruit"
  107. }
  108. int(14)
  109. bool(false)
  110. -- Testing fgetcsv() with file opened using x+ mode --
  111. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  112. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  113. array(1) {
  114. [0]=>
  115. string(13) ""water",fruit"
  116. }
  117. int(14)
  118. bool(false)
  119. -- Testing fgetcsv() with file opened using x+b mode --
  120. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  121. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  122. array(1) {
  123. [0]=>
  124. string(13) ""water",fruit"
  125. }
  126. int(14)
  127. bool(false)
  128. -- Testing fgetcsv() with file opened using x+t mode --
  129. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  130. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  131. array(1) {
  132. [0]=>
  133. string(13) ""water",fruit"
  134. }
  135. int(14)
  136. bool(false)
  137. -- Testing fgetcsv() with file opened using w+ mode --
  138. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  139. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  140. array(1) {
  141. [0]=>
  142. string(15) ""water","fruit""
  143. }
  144. int(16)
  145. bool(false)
  146. -- Testing fgetcsv() with file opened using w+b mode --
  147. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  148. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  149. array(1) {
  150. [0]=>
  151. string(15) ""water","fruit""
  152. }
  153. int(16)
  154. bool(false)
  155. -- Testing fgetcsv() with file opened using w+t mode --
  156. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  157. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  158. array(1) {
  159. [0]=>
  160. string(15) ""water","fruit""
  161. }
  162. int(16)
  163. bool(false)
  164. -- Testing fgetcsv() with file opened using x+ mode --
  165. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  166. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  167. array(1) {
  168. [0]=>
  169. string(15) ""water","fruit""
  170. }
  171. int(16)
  172. bool(false)
  173. -- Testing fgetcsv() with file opened using x+b mode --
  174. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  175. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  176. array(1) {
  177. [0]=>
  178. string(15) ""water","fruit""
  179. }
  180. int(16)
  181. bool(false)
  182. -- Testing fgetcsv() with file opened using x+t mode --
  183. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  184. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  185. array(1) {
  186. [0]=>
  187. string(15) ""water","fruit""
  188. }
  189. int(16)
  190. bool(false)
  191. -- Testing fgetcsv() with file opened using w+ mode --
  192. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  193. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  194. array(1) {
  195. [0]=>
  196. string(15) "^water^ ^fruit^"
  197. }
  198. int(16)
  199. bool(false)
  200. -- Testing fgetcsv() with file opened using w+b mode --
  201. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  202. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  203. array(1) {
  204. [0]=>
  205. string(15) "^water^ ^fruit^"
  206. }
  207. int(16)
  208. bool(false)
  209. -- Testing fgetcsv() with file opened using w+t mode --
  210. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  211. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  212. array(1) {
  213. [0]=>
  214. string(15) "^water^ ^fruit^"
  215. }
  216. int(16)
  217. bool(false)
  218. -- Testing fgetcsv() with file opened using x+ mode --
  219. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  220. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  221. array(1) {
  222. [0]=>
  223. string(15) "^water^ ^fruit^"
  224. }
  225. int(16)
  226. bool(false)
  227. -- Testing fgetcsv() with file opened using x+b mode --
  228. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  229. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  230. array(1) {
  231. [0]=>
  232. string(15) "^water^ ^fruit^"
  233. }
  234. int(16)
  235. bool(false)
  236. -- Testing fgetcsv() with file opened using x+t mode --
  237. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  238. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  239. array(1) {
  240. [0]=>
  241. string(15) "^water^ ^fruit^"
  242. }
  243. int(16)
  244. bool(false)
  245. -- Testing fgetcsv() with file opened using w+ mode --
  246. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  247. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  248. array(1) {
  249. [0]=>
  250. string(15) "&water&:&fruit&"
  251. }
  252. int(16)
  253. bool(false)
  254. -- Testing fgetcsv() with file opened using w+b mode --
  255. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  256. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  257. array(1) {
  258. [0]=>
  259. string(15) "&water&:&fruit&"
  260. }
  261. int(16)
  262. bool(false)
  263. -- Testing fgetcsv() with file opened using w+t mode --
  264. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  265. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  266. array(1) {
  267. [0]=>
  268. string(15) "&water&:&fruit&"
  269. }
  270. int(16)
  271. bool(false)
  272. -- Testing fgetcsv() with file opened using x+ mode --
  273. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  274. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  275. array(1) {
  276. [0]=>
  277. string(15) "&water&:&fruit&"
  278. }
  279. int(16)
  280. bool(false)
  281. -- Testing fgetcsv() with file opened using x+b mode --
  282. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  283. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  284. array(1) {
  285. [0]=>
  286. string(15) "&water&:&fruit&"
  287. }
  288. int(16)
  289. bool(false)
  290. -- Testing fgetcsv() with file opened using x+t mode --
  291. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  292. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  293. array(1) {
  294. [0]=>
  295. string(15) "&water&:&fruit&"
  296. }
  297. int(16)
  298. bool(false)
  299. -- Testing fgetcsv() with file opened using w+ mode --
  300. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  301. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  302. array(1) {
  303. [0]=>
  304. string(15) "=water===fruit="
  305. }
  306. int(16)
  307. bool(false)
  308. -- Testing fgetcsv() with file opened using w+b mode --
  309. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  310. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  311. array(1) {
  312. [0]=>
  313. string(15) "=water===fruit="
  314. }
  315. int(16)
  316. bool(false)
  317. -- Testing fgetcsv() with file opened using w+t mode --
  318. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  319. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  320. array(1) {
  321. [0]=>
  322. string(15) "=water===fruit="
  323. }
  324. int(16)
  325. bool(false)
  326. -- Testing fgetcsv() with file opened using x+ mode --
  327. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  328. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  329. array(1) {
  330. [0]=>
  331. string(15) "=water===fruit="
  332. }
  333. int(16)
  334. bool(false)
  335. -- Testing fgetcsv() with file opened using x+b mode --
  336. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  337. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  338. array(1) {
  339. [0]=>
  340. string(15) "=water===fruit="
  341. }
  342. int(16)
  343. bool(false)
  344. -- Testing fgetcsv() with file opened using x+t mode --
  345. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  346. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  347. array(1) {
  348. [0]=>
  349. string(15) "=water===fruit="
  350. }
  351. int(16)
  352. bool(false)
  353. -- Testing fgetcsv() with file opened using w+ mode --
  354. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  355. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  356. array(1) {
  357. [0]=>
  358. string(17) "-water--fruit-air"
  359. }
  360. int(18)
  361. bool(false)
  362. -- Testing fgetcsv() with file opened using w+b mode --
  363. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  364. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  365. array(1) {
  366. [0]=>
  367. string(17) "-water--fruit-air"
  368. }
  369. int(18)
  370. bool(false)
  371. -- Testing fgetcsv() with file opened using w+t mode --
  372. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  373. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  374. array(1) {
  375. [0]=>
  376. string(17) "-water--fruit-air"
  377. }
  378. int(18)
  379. bool(false)
  380. -- Testing fgetcsv() with file opened using x+ mode --
  381. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  382. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  383. array(1) {
  384. [0]=>
  385. string(17) "-water--fruit-air"
  386. }
  387. int(18)
  388. bool(false)
  389. -- Testing fgetcsv() with file opened using x+b mode --
  390. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  391. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  392. array(1) {
  393. [0]=>
  394. string(17) "-water--fruit-air"
  395. }
  396. int(18)
  397. bool(false)
  398. -- Testing fgetcsv() with file opened using x+t mode --
  399. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  400. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  401. array(1) {
  402. [0]=>
  403. string(17) "-water--fruit-air"
  404. }
  405. int(18)
  406. bool(false)
  407. -- Testing fgetcsv() with file opened using w+ mode --
  408. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  409. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  410. array(1) {
  411. [0]=>
  412. string(21) "-water---fruit---air-"
  413. }
  414. int(22)
  415. bool(false)
  416. -- Testing fgetcsv() with file opened using w+b mode --
  417. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  418. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  419. array(1) {
  420. [0]=>
  421. string(21) "-water---fruit---air-"
  422. }
  423. int(22)
  424. bool(false)
  425. -- Testing fgetcsv() with file opened using w+t mode --
  426. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  427. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  428. array(1) {
  429. [0]=>
  430. string(21) "-water---fruit---air-"
  431. }
  432. int(22)
  433. bool(false)
  434. -- Testing fgetcsv() with file opened using x+ mode --
  435. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  436. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  437. array(1) {
  438. [0]=>
  439. string(21) "-water---fruit---air-"
  440. }
  441. int(22)
  442. bool(false)
  443. -- Testing fgetcsv() with file opened using x+b mode --
  444. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  445. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  446. array(1) {
  447. [0]=>
  448. string(21) "-water---fruit---air-"
  449. }
  450. int(22)
  451. bool(false)
  452. -- Testing fgetcsv() with file opened using x+t mode --
  453. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  454. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  455. array(1) {
  456. [0]=>
  457. string(21) "-water---fruit---air-"
  458. }
  459. int(22)
  460. bool(false)
  461. -- Testing fgetcsv() with file opened using w+ mode --
  462. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  463. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  464. array(1) {
  465. [0]=>
  466. string(23) "&""""&:&"&:,:":&,&:,,,,"
  467. }
  468. int(24)
  469. bool(false)
  470. -- Testing fgetcsv() with file opened using w+b mode --
  471. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  472. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  473. array(1) {
  474. [0]=>
  475. string(23) "&""""&:&"&:,:":&,&:,,,,"
  476. }
  477. int(24)
  478. bool(false)
  479. -- Testing fgetcsv() with file opened using w+t mode --
  480. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  481. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  482. array(1) {
  483. [0]=>
  484. string(23) "&""""&:&"&:,:":&,&:,,,,"
  485. }
  486. int(24)
  487. bool(false)
  488. -- Testing fgetcsv() with file opened using x+ mode --
  489. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  490. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  491. array(1) {
  492. [0]=>
  493. string(23) "&""""&:&"&:,:":&,&:,,,,"
  494. }
  495. int(24)
  496. bool(false)
  497. -- Testing fgetcsv() with file opened using x+b mode --
  498. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  499. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  500. array(1) {
  501. [0]=>
  502. string(23) "&""""&:&"&:,:":&,&:,,,,"
  503. }
  504. int(24)
  505. bool(false)
  506. -- Testing fgetcsv() with file opened using x+t mode --
  507. Notice: fgetcsv(): delimiter must be a single character in %s on line %d
  508. Notice: fgetcsv(): enclosure must be a single character in %s on line %d
  509. array(1) {
  510. [0]=>
  511. string(23) "&""""&:&"&:,:":&,&:,,,,"
  512. }
  513. int(24)
  514. bool(false)
  515. Done