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