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