fscanf_variation18.phpt 12 KB

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