1--TEST--
2Test fgetcsv() : usage variations - reading the blank line
3--FILE--
4<?php
5/* Testing fgetcsv() by reading a file containing a blank line */
6
7echo "*** Testing fgetcsv() : reading the blank line ***\n";
8
9
10$filename = __DIR__ . '/fgetcsv_variation14.tmp';
11@unlink($filename);
12
13$file_modes = array ("r","rb", "rt", "r+", "r+b", "r+t",
14                     "a+", "a+b", "a+t",
15                     "w+", "w+b", "w+t",
16                     "x+", "x+b", "x+t");
17
18$loop_counter = 1;
19  for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) {
20    // create the file and add the content with has csv fields
21    if ( strstr($file_modes[$mode_counter], "r") ) {
22      $file_handle = fopen($filename, "w");
23    } else {
24      $file_handle = fopen($filename, $file_modes[$mode_counter] );
25    }
26    if ( !$file_handle ) {
27      echo "Error: failed to create file $filename!\n";
28      exit();
29    }
30    // write a blank line
31    fwrite($file_handle, "\n"); // blank line
32
33    // close the file if the mode to be used is read mode  and re-open using read mode
34    // else rewind the file pointer to beginning of the file
35    if ( strstr($file_modes[$mode_counter], "r" ) ) {
36      fclose($file_handle);
37      $file_handle = fopen($filename, $file_modes[$mode_counter]);
38    } else {
39      // rewind the file pointer to bof
40      rewind($file_handle);
41    }
42
43    echo "\n-- Testing fgetcsv() with file opened using $file_modes[$mode_counter] mode --\n";
44
45    // call fgetcsv() to parse csv fields
46
47    // read the next line which is a blank line to see the working of fgetcsv
48    $fp_pos = ftell($file_handle);
49    var_dump( fgetcsv($file_handle, 1024, escape: "\\") );
50    // check the file pointer position and if eof
51    var_dump( ftell($file_handle) );
52    var_dump( feof($file_handle) );
53    // read again to struck EOF
54    var_dump( fgetcsv($file_handle, 1024, escape: "\\") );
55    // check the file pointer position and if eof
56    var_dump( ftell($file_handle) );
57    var_dump( feof($file_handle) );
58
59    // close the file
60    fclose($file_handle);
61    //delete file
62    unlink($filename);
63  } //end of mode loop
64
65echo "Done\n";
66?>
67--EXPECT--
68*** Testing fgetcsv() : reading the blank line ***
69
70-- Testing fgetcsv() with file opened using r mode --
71array(1) {
72  [0]=>
73  NULL
74}
75int(1)
76bool(false)
77bool(false)
78int(1)
79bool(true)
80
81-- Testing fgetcsv() with file opened using rb mode --
82array(1) {
83  [0]=>
84  NULL
85}
86int(1)
87bool(false)
88bool(false)
89int(1)
90bool(true)
91
92-- Testing fgetcsv() with file opened using rt mode --
93array(1) {
94  [0]=>
95  NULL
96}
97int(1)
98bool(false)
99bool(false)
100int(1)
101bool(true)
102
103-- Testing fgetcsv() with file opened using r+ mode --
104array(1) {
105  [0]=>
106  NULL
107}
108int(1)
109bool(false)
110bool(false)
111int(1)
112bool(true)
113
114-- Testing fgetcsv() with file opened using r+b mode --
115array(1) {
116  [0]=>
117  NULL
118}
119int(1)
120bool(false)
121bool(false)
122int(1)
123bool(true)
124
125-- Testing fgetcsv() with file opened using r+t mode --
126array(1) {
127  [0]=>
128  NULL
129}
130int(1)
131bool(false)
132bool(false)
133int(1)
134bool(true)
135
136-- Testing fgetcsv() with file opened using a+ mode --
137array(1) {
138  [0]=>
139  NULL
140}
141int(1)
142bool(false)
143bool(false)
144int(1)
145bool(true)
146
147-- Testing fgetcsv() with file opened using a+b mode --
148array(1) {
149  [0]=>
150  NULL
151}
152int(1)
153bool(false)
154bool(false)
155int(1)
156bool(true)
157
158-- Testing fgetcsv() with file opened using a+t mode --
159array(1) {
160  [0]=>
161  NULL
162}
163int(1)
164bool(false)
165bool(false)
166int(1)
167bool(true)
168
169-- Testing fgetcsv() with file opened using w+ mode --
170array(1) {
171  [0]=>
172  NULL
173}
174int(1)
175bool(false)
176bool(false)
177int(1)
178bool(true)
179
180-- Testing fgetcsv() with file opened using w+b mode --
181array(1) {
182  [0]=>
183  NULL
184}
185int(1)
186bool(false)
187bool(false)
188int(1)
189bool(true)
190
191-- Testing fgetcsv() with file opened using w+t mode --
192array(1) {
193  [0]=>
194  NULL
195}
196int(1)
197bool(false)
198bool(false)
199int(1)
200bool(true)
201
202-- Testing fgetcsv() with file opened using x+ mode --
203array(1) {
204  [0]=>
205  NULL
206}
207int(1)
208bool(false)
209bool(false)
210int(1)
211bool(true)
212
213-- Testing fgetcsv() with file opened using x+b mode --
214array(1) {
215  [0]=>
216  NULL
217}
218int(1)
219bool(false)
220bool(false)
221int(1)
222bool(true)
223
224-- Testing fgetcsv() with file opened using x+t mode --
225array(1) {
226  [0]=>
227  NULL
228}
229int(1)
230bool(false)
231bool(false)
232int(1)
233bool(true)
234Done
235