fscanf_variation24.phpt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994
  1. --TEST--
  2. Test fscanf() function: usage variations - char formats with strings
  3. --FILE--
  4. <?php
  5. /*
  6. Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
  7. Description: Parses input from a file according to a format
  8. */
  9. /* Test fscanf() to scan strings using different char format types */
  10. $file_path = dirname(__FILE__);
  11. echo "*** Test fscanf(): different char format types with strings ***\n";
  12. // create a file
  13. $filename = "$file_path/fscanf_variation24.tmp";
  14. $file_handle = fopen($filename, "w");
  15. if($file_handle == false)
  16. exit("Error:failed to open file $filename");
  17. // array of strings
  18. $strings = array (
  19. "",
  20. '',
  21. "0",
  22. '0',
  23. "1",
  24. '1',
  25. "\x01",
  26. '\x01',
  27. "\01",
  28. '\01',
  29. 'string',
  30. "string",
  31. "true",
  32. "FALSE",
  33. 'false',
  34. 'TRUE',
  35. "NULL",
  36. 'null'
  37. );
  38. $char_formats = array( "%c",
  39. "%hc", "%lc", "%Lc",
  40. " %c", "%c ", "% c",
  41. "\t%c", "\n%c", "%4c",
  42. "%30c", "%[a-zA-Z@#$&0-9]", "%*c");
  43. $counter = 1;
  44. // writing to the file
  45. foreach($strings as $string) {
  46. @fprintf($file_handle, $string);
  47. @fprintf($file_handle, "\n");
  48. }
  49. // closing the file
  50. fclose($file_handle);
  51. // opening the file for reading
  52. $file_handle = fopen($filename, "r");
  53. if($file_handle == false) {
  54. exit("Error:failed to open file $filename");
  55. }
  56. $counter = 1;
  57. // reading the values from file using different char formats
  58. foreach($char_formats as $char_format) {
  59. // rewind the file so that for every foreach iteration the file pointer starts from bof
  60. rewind($file_handle);
  61. echo "\n-- iteration $counter --\n";
  62. while( !feof($file_handle) ) {
  63. var_dump( fscanf($file_handle,$char_format) );
  64. }
  65. $counter++;
  66. }
  67. echo "\n*** Done ***";
  68. ?>
  69. --CLEAN--
  70. <?php
  71. $file_path = dirname(__FILE__);
  72. $filename = "$file_path/fscanf_variation24.tmp";
  73. unlink($filename);
  74. ?>
  75. --EXPECTF--
  76. *** Test fscanf(): different char format types with strings ***
  77. -- iteration 1 --
  78. array(1) {
  79. [0]=>
  80. string(0) ""
  81. }
  82. array(1) {
  83. [0]=>
  84. string(0) ""
  85. }
  86. array(1) {
  87. [0]=>
  88. string(1) "0"
  89. }
  90. array(1) {
  91. [0]=>
  92. string(1) "0"
  93. }
  94. array(1) {
  95. [0]=>
  96. string(1) "1"
  97. }
  98. array(1) {
  99. [0]=>
  100. string(1) "1"
  101. }
  102. array(1) {
  103. [0]=>
  104. string(1) ""
  105. }
  106. array(1) {
  107. [0]=>
  108. string(1) "\"
  109. }
  110. array(1) {
  111. [0]=>
  112. string(1) ""
  113. }
  114. array(1) {
  115. [0]=>
  116. string(1) "\"
  117. }
  118. array(1) {
  119. [0]=>
  120. string(1) "s"
  121. }
  122. array(1) {
  123. [0]=>
  124. string(1) "s"
  125. }
  126. array(1) {
  127. [0]=>
  128. string(1) "t"
  129. }
  130. array(1) {
  131. [0]=>
  132. string(1) "F"
  133. }
  134. array(1) {
  135. [0]=>
  136. string(1) "f"
  137. }
  138. array(1) {
  139. [0]=>
  140. string(1) "T"
  141. }
  142. array(1) {
  143. [0]=>
  144. string(1) "N"
  145. }
  146. array(1) {
  147. [0]=>
  148. string(1) "n"
  149. }
  150. bool(false)
  151. -- iteration 2 --
  152. array(1) {
  153. [0]=>
  154. string(0) ""
  155. }
  156. array(1) {
  157. [0]=>
  158. string(0) ""
  159. }
  160. array(1) {
  161. [0]=>
  162. string(1) "0"
  163. }
  164. array(1) {
  165. [0]=>
  166. string(1) "0"
  167. }
  168. array(1) {
  169. [0]=>
  170. string(1) "1"
  171. }
  172. array(1) {
  173. [0]=>
  174. string(1) "1"
  175. }
  176. array(1) {
  177. [0]=>
  178. string(1) ""
  179. }
  180. array(1) {
  181. [0]=>
  182. string(1) "\"
  183. }
  184. array(1) {
  185. [0]=>
  186. string(1) ""
  187. }
  188. array(1) {
  189. [0]=>
  190. string(1) "\"
  191. }
  192. array(1) {
  193. [0]=>
  194. string(1) "s"
  195. }
  196. array(1) {
  197. [0]=>
  198. string(1) "s"
  199. }
  200. array(1) {
  201. [0]=>
  202. string(1) "t"
  203. }
  204. array(1) {
  205. [0]=>
  206. string(1) "F"
  207. }
  208. array(1) {
  209. [0]=>
  210. string(1) "f"
  211. }
  212. array(1) {
  213. [0]=>
  214. string(1) "T"
  215. }
  216. array(1) {
  217. [0]=>
  218. string(1) "N"
  219. }
  220. array(1) {
  221. [0]=>
  222. string(1) "n"
  223. }
  224. bool(false)
  225. -- iteration 3 --
  226. array(1) {
  227. [0]=>
  228. string(0) ""
  229. }
  230. array(1) {
  231. [0]=>
  232. string(0) ""
  233. }
  234. array(1) {
  235. [0]=>
  236. string(1) "0"
  237. }
  238. array(1) {
  239. [0]=>
  240. string(1) "0"
  241. }
  242. array(1) {
  243. [0]=>
  244. string(1) "1"
  245. }
  246. array(1) {
  247. [0]=>
  248. string(1) "1"
  249. }
  250. array(1) {
  251. [0]=>
  252. string(1) ""
  253. }
  254. array(1) {
  255. [0]=>
  256. string(1) "\"
  257. }
  258. array(1) {
  259. [0]=>
  260. string(1) ""
  261. }
  262. array(1) {
  263. [0]=>
  264. string(1) "\"
  265. }
  266. array(1) {
  267. [0]=>
  268. string(1) "s"
  269. }
  270. array(1) {
  271. [0]=>
  272. string(1) "s"
  273. }
  274. array(1) {
  275. [0]=>
  276. string(1) "t"
  277. }
  278. array(1) {
  279. [0]=>
  280. string(1) "F"
  281. }
  282. array(1) {
  283. [0]=>
  284. string(1) "f"
  285. }
  286. array(1) {
  287. [0]=>
  288. string(1) "T"
  289. }
  290. array(1) {
  291. [0]=>
  292. string(1) "N"
  293. }
  294. array(1) {
  295. [0]=>
  296. string(1) "n"
  297. }
  298. bool(false)
  299. -- iteration 4 --
  300. array(1) {
  301. [0]=>
  302. string(0) ""
  303. }
  304. array(1) {
  305. [0]=>
  306. string(0) ""
  307. }
  308. array(1) {
  309. [0]=>
  310. string(1) "0"
  311. }
  312. array(1) {
  313. [0]=>
  314. string(1) "0"
  315. }
  316. array(1) {
  317. [0]=>
  318. string(1) "1"
  319. }
  320. array(1) {
  321. [0]=>
  322. string(1) "1"
  323. }
  324. array(1) {
  325. [0]=>
  326. string(1) ""
  327. }
  328. array(1) {
  329. [0]=>
  330. string(1) "\"
  331. }
  332. array(1) {
  333. [0]=>
  334. string(1) ""
  335. }
  336. array(1) {
  337. [0]=>
  338. string(1) "\"
  339. }
  340. array(1) {
  341. [0]=>
  342. string(1) "s"
  343. }
  344. array(1) {
  345. [0]=>
  346. string(1) "s"
  347. }
  348. array(1) {
  349. [0]=>
  350. string(1) "t"
  351. }
  352. array(1) {
  353. [0]=>
  354. string(1) "F"
  355. }
  356. array(1) {
  357. [0]=>
  358. string(1) "f"
  359. }
  360. array(1) {
  361. [0]=>
  362. string(1) "T"
  363. }
  364. array(1) {
  365. [0]=>
  366. string(1) "N"
  367. }
  368. array(1) {
  369. [0]=>
  370. string(1) "n"
  371. }
  372. bool(false)
  373. -- iteration 5 --
  374. NULL
  375. NULL
  376. array(1) {
  377. [0]=>
  378. string(1) "0"
  379. }
  380. array(1) {
  381. [0]=>
  382. string(1) "0"
  383. }
  384. array(1) {
  385. [0]=>
  386. string(1) "1"
  387. }
  388. array(1) {
  389. [0]=>
  390. string(1) "1"
  391. }
  392. array(1) {
  393. [0]=>
  394. string(1) ""
  395. }
  396. array(1) {
  397. [0]=>
  398. string(1) "\"
  399. }
  400. array(1) {
  401. [0]=>
  402. string(1) ""
  403. }
  404. array(1) {
  405. [0]=>
  406. string(1) "\"
  407. }
  408. array(1) {
  409. [0]=>
  410. string(1) "s"
  411. }
  412. array(1) {
  413. [0]=>
  414. string(1) "s"
  415. }
  416. array(1) {
  417. [0]=>
  418. string(1) "t"
  419. }
  420. array(1) {
  421. [0]=>
  422. string(1) "F"
  423. }
  424. array(1) {
  425. [0]=>
  426. string(1) "f"
  427. }
  428. array(1) {
  429. [0]=>
  430. string(1) "T"
  431. }
  432. array(1) {
  433. [0]=>
  434. string(1) "N"
  435. }
  436. array(1) {
  437. [0]=>
  438. string(1) "n"
  439. }
  440. bool(false)
  441. -- iteration 6 --
  442. array(1) {
  443. [0]=>
  444. string(0) ""
  445. }
  446. array(1) {
  447. [0]=>
  448. string(0) ""
  449. }
  450. array(1) {
  451. [0]=>
  452. string(1) "0"
  453. }
  454. array(1) {
  455. [0]=>
  456. string(1) "0"
  457. }
  458. array(1) {
  459. [0]=>
  460. string(1) "1"
  461. }
  462. array(1) {
  463. [0]=>
  464. string(1) "1"
  465. }
  466. array(1) {
  467. [0]=>
  468. string(1) ""
  469. }
  470. array(1) {
  471. [0]=>
  472. string(1) "\"
  473. }
  474. array(1) {
  475. [0]=>
  476. string(1) ""
  477. }
  478. array(1) {
  479. [0]=>
  480. string(1) "\"
  481. }
  482. array(1) {
  483. [0]=>
  484. string(1) "s"
  485. }
  486. array(1) {
  487. [0]=>
  488. string(1) "s"
  489. }
  490. array(1) {
  491. [0]=>
  492. string(1) "t"
  493. }
  494. array(1) {
  495. [0]=>
  496. string(1) "F"
  497. }
  498. array(1) {
  499. [0]=>
  500. string(1) "f"
  501. }
  502. array(1) {
  503. [0]=>
  504. string(1) "T"
  505. }
  506. array(1) {
  507. [0]=>
  508. string(1) "N"
  509. }
  510. array(1) {
  511. [0]=>
  512. string(1) "n"
  513. }
  514. bool(false)
  515. -- iteration 7 --
  516. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  517. NULL
  518. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  519. NULL
  520. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  521. NULL
  522. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  523. NULL
  524. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  525. NULL
  526. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  527. NULL
  528. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  529. NULL
  530. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  531. NULL
  532. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  533. NULL
  534. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  535. NULL
  536. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  537. NULL
  538. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  539. NULL
  540. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  541. NULL
  542. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  543. NULL
  544. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  545. NULL
  546. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  547. NULL
  548. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  549. NULL
  550. Warning: fscanf(): Bad scan conversion character " " in %s on line %d
  551. NULL
  552. bool(false)
  553. -- iteration 8 --
  554. NULL
  555. NULL
  556. array(1) {
  557. [0]=>
  558. string(1) "0"
  559. }
  560. array(1) {
  561. [0]=>
  562. string(1) "0"
  563. }
  564. array(1) {
  565. [0]=>
  566. string(1) "1"
  567. }
  568. array(1) {
  569. [0]=>
  570. string(1) "1"
  571. }
  572. array(1) {
  573. [0]=>
  574. string(1) ""
  575. }
  576. array(1) {
  577. [0]=>
  578. string(1) "\"
  579. }
  580. array(1) {
  581. [0]=>
  582. string(1) ""
  583. }
  584. array(1) {
  585. [0]=>
  586. string(1) "\"
  587. }
  588. array(1) {
  589. [0]=>
  590. string(1) "s"
  591. }
  592. array(1) {
  593. [0]=>
  594. string(1) "s"
  595. }
  596. array(1) {
  597. [0]=>
  598. string(1) "t"
  599. }
  600. array(1) {
  601. [0]=>
  602. string(1) "F"
  603. }
  604. array(1) {
  605. [0]=>
  606. string(1) "f"
  607. }
  608. array(1) {
  609. [0]=>
  610. string(1) "T"
  611. }
  612. array(1) {
  613. [0]=>
  614. string(1) "N"
  615. }
  616. array(1) {
  617. [0]=>
  618. string(1) "n"
  619. }
  620. bool(false)
  621. -- iteration 9 --
  622. NULL
  623. NULL
  624. array(1) {
  625. [0]=>
  626. string(1) "0"
  627. }
  628. array(1) {
  629. [0]=>
  630. string(1) "0"
  631. }
  632. array(1) {
  633. [0]=>
  634. string(1) "1"
  635. }
  636. array(1) {
  637. [0]=>
  638. string(1) "1"
  639. }
  640. array(1) {
  641. [0]=>
  642. string(1) ""
  643. }
  644. array(1) {
  645. [0]=>
  646. string(1) "\"
  647. }
  648. array(1) {
  649. [0]=>
  650. string(1) ""
  651. }
  652. array(1) {
  653. [0]=>
  654. string(1) "\"
  655. }
  656. array(1) {
  657. [0]=>
  658. string(1) "s"
  659. }
  660. array(1) {
  661. [0]=>
  662. string(1) "s"
  663. }
  664. array(1) {
  665. [0]=>
  666. string(1) "t"
  667. }
  668. array(1) {
  669. [0]=>
  670. string(1) "F"
  671. }
  672. array(1) {
  673. [0]=>
  674. string(1) "f"
  675. }
  676. array(1) {
  677. [0]=>
  678. string(1) "T"
  679. }
  680. array(1) {
  681. [0]=>
  682. string(1) "N"
  683. }
  684. array(1) {
  685. [0]=>
  686. string(1) "n"
  687. }
  688. bool(false)
  689. -- iteration 10 --
  690. array(1) {
  691. [0]=>
  692. string(0) ""
  693. }
  694. array(1) {
  695. [0]=>
  696. string(0) ""
  697. }
  698. array(1) {
  699. [0]=>
  700. string(1) "0"
  701. }
  702. array(1) {
  703. [0]=>
  704. string(1) "0"
  705. }
  706. array(1) {
  707. [0]=>
  708. string(1) "1"
  709. }
  710. array(1) {
  711. [0]=>
  712. string(1) "1"
  713. }
  714. array(1) {
  715. [0]=>
  716. string(1) ""
  717. }
  718. array(1) {
  719. [0]=>
  720. string(4) "\x01"
  721. }
  722. array(1) {
  723. [0]=>
  724. string(1) ""
  725. }
  726. array(1) {
  727. [0]=>
  728. string(3) "\01"
  729. }
  730. array(1) {
  731. [0]=>
  732. string(4) "stri"
  733. }
  734. array(1) {
  735. [0]=>
  736. string(4) "stri"
  737. }
  738. array(1) {
  739. [0]=>
  740. string(4) "true"
  741. }
  742. array(1) {
  743. [0]=>
  744. string(4) "FALS"
  745. }
  746. array(1) {
  747. [0]=>
  748. string(4) "fals"
  749. }
  750. array(1) {
  751. [0]=>
  752. string(4) "TRUE"
  753. }
  754. array(1) {
  755. [0]=>
  756. string(4) "NULL"
  757. }
  758. array(1) {
  759. [0]=>
  760. string(4) "null"
  761. }
  762. bool(false)
  763. -- iteration 11 --
  764. array(1) {
  765. [0]=>
  766. string(0) ""
  767. }
  768. array(1) {
  769. [0]=>
  770. string(0) ""
  771. }
  772. array(1) {
  773. [0]=>
  774. string(1) "0"
  775. }
  776. array(1) {
  777. [0]=>
  778. string(1) "0"
  779. }
  780. array(1) {
  781. [0]=>
  782. string(1) "1"
  783. }
  784. array(1) {
  785. [0]=>
  786. string(1) "1"
  787. }
  788. array(1) {
  789. [0]=>
  790. string(1) ""
  791. }
  792. array(1) {
  793. [0]=>
  794. string(4) "\x01"
  795. }
  796. array(1) {
  797. [0]=>
  798. string(1) ""
  799. }
  800. array(1) {
  801. [0]=>
  802. string(3) "\01"
  803. }
  804. array(1) {
  805. [0]=>
  806. string(6) "string"
  807. }
  808. array(1) {
  809. [0]=>
  810. string(6) "string"
  811. }
  812. array(1) {
  813. [0]=>
  814. string(4) "true"
  815. }
  816. array(1) {
  817. [0]=>
  818. string(5) "FALSE"
  819. }
  820. array(1) {
  821. [0]=>
  822. string(5) "false"
  823. }
  824. array(1) {
  825. [0]=>
  826. string(4) "TRUE"
  827. }
  828. array(1) {
  829. [0]=>
  830. string(4) "NULL"
  831. }
  832. array(1) {
  833. [0]=>
  834. string(4) "null"
  835. }
  836. bool(false)
  837. -- iteration 12 --
  838. array(1) {
  839. [0]=>
  840. NULL
  841. }
  842. array(1) {
  843. [0]=>
  844. NULL
  845. }
  846. array(1) {
  847. [0]=>
  848. string(1) "0"
  849. }
  850. array(1) {
  851. [0]=>
  852. string(1) "0"
  853. }
  854. array(1) {
  855. [0]=>
  856. string(1) "1"
  857. }
  858. array(1) {
  859. [0]=>
  860. string(1) "1"
  861. }
  862. array(1) {
  863. [0]=>
  864. NULL
  865. }
  866. array(1) {
  867. [0]=>
  868. NULL
  869. }
  870. array(1) {
  871. [0]=>
  872. NULL
  873. }
  874. array(1) {
  875. [0]=>
  876. NULL
  877. }
  878. array(1) {
  879. [0]=>
  880. string(6) "string"
  881. }
  882. array(1) {
  883. [0]=>
  884. string(6) "string"
  885. }
  886. array(1) {
  887. [0]=>
  888. string(4) "true"
  889. }
  890. array(1) {
  891. [0]=>
  892. string(5) "FALSE"
  893. }
  894. array(1) {
  895. [0]=>
  896. string(5) "false"
  897. }
  898. array(1) {
  899. [0]=>
  900. string(4) "TRUE"
  901. }
  902. array(1) {
  903. [0]=>
  904. string(4) "NULL"
  905. }
  906. array(1) {
  907. [0]=>
  908. string(4) "null"
  909. }
  910. bool(false)
  911. -- iteration 13 --
  912. array(0) {
  913. }
  914. array(0) {
  915. }
  916. array(0) {
  917. }
  918. array(0) {
  919. }
  920. array(0) {
  921. }
  922. array(0) {
  923. }
  924. array(0) {
  925. }
  926. array(0) {
  927. }
  928. array(0) {
  929. }
  930. array(0) {
  931. }
  932. array(0) {
  933. }
  934. array(0) {
  935. }
  936. array(0) {
  937. }
  938. array(0) {
  939. }
  940. array(0) {
  941. }
  942. array(0) {
  943. }
  944. array(0) {
  945. }
  946. array(0) {
  947. }
  948. bool(false)
  949. *** Done ***