1--TEST--
2Test fgetss() function : usage variations - read modes
3--FILE--
4<?php
5/*
6 Prototype: string fgetss ( resource $handle [, int $length [, string $allowable_tags]] );
7 Description: Gets line from file pointer and strip HTML tags
8*/
9
10// include the common file related test functions
11include ("file.inc");
12
13/*Test fgetss() with all read modes , reading line by line with allowable tags: <test>, <html>, <?> */
14
15echo "*** Testing fgetss() : usage variations  ***\n";
16
17/* string with html and php tags */
18$string_with_tags = <<<EOT
19<test>Testing fgetss() functions</test>
20<?php echo "this string is within php tag"; ?> {;}<{> this
21is a heredoc string. <pg>ksklnm@@$$&$&^%&^%&^%&</pg>
22<html> html </html> <?php echo "php"; ?>
23this line is without any html and php tags
24this is a line with more than eighty character,want to check line splitting correctly after 80 characters
25this is the text containing \r character
26this text contains some html tags <body> body </body> <br> br </br>
27this is the line with \n character.
28EOT;
29
30$filename = dirname(__FILE__)."/fgetss_variation2.tmp";
31
32/* try reading the file opened in different modes of reading */
33$file_modes = array("r","rb", "rt","r+", "r+b", "r+t");
34
35for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) {
36  echo "\n-- Testing fgetss() with file opened using $file_modes[$mode_counter] mode --\n";
37
38  /* create an empty file and write the strings with tags */
39  create_file ($filename); //create an empty file
40  file_put_contents($filename, $string_with_tags);
41  $file_handle = fopen($filename, $file_modes[$mode_counter]);
42  if(!$file_handle) {
43    echo "Error: failed to open file $filename!\n";
44    exit();
45  }
46
47  // rewind the file pointer to beginning of the file
48  var_dump( filesize($filename) );
49  var_dump( rewind($file_handle) );
50  var_dump( ftell($file_handle) );
51  var_dump( feof($file_handle) );
52
53  /* rewind the file and read the file  line by line with allowable tags */
54  echo "-- Reading line by line with allowable tags: <test>, <html>, <?> --\n";
55  rewind($file_handle);
56  $line = 1;
57  while( !feof($file_handle) ) {
58     echo "-- Line $line --\n"; $line++;
59     var_dump( fgetss($file_handle, 80, "<test>, <html>, <?>") );
60     var_dump( ftell($file_handle) );  // check the file pointer position
61     var_dump( feof($file_handle) );  // check if eof reached
62  }
63
64  // close the file
65  fclose($file_handle);
66  // delete the file
67  delete_file($filename);
68} // end of for - mode_counter
69
70echo "Done\n";
71?>
72--EXPECTF--
73*** Testing fgetss() : usage variations  ***
74
75-- Testing fgetss() with file opened using r mode --
76int(486)
77bool(true)
78int(0)
79bool(false)
80-- Reading line by line with allowable tags: <test>, <html>, <?> --
81-- Line 1 --
82string(40) "<test>Testing fgetss() functions</test>
83"
84int(40)
85bool(false)
86-- Line 2 --
87string(10) " {;} this
88"
89int(99)
90bool(false)
91-- Line 3 --
92string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
93"
94int(152)
95bool(false)
96-- Line 4 --
97string(21) "<html> html </html>
98"
99int(193)
100bool(false)
101-- Line 5 --
102string(43) "this line is without any html and php tags
103"
104int(236)
105bool(false)
106-- Line 6 --
107string(79) "this is a line with more than eighty character,want to check line splitting cor"
108int(315)
109bool(false)
110-- Line 7 --
111string(27) "rectly after 80 characters
112"
113int(342)
114bool(false)
115-- Line 8 --
116string(41) "this is the text containing
116 character
117"
118int(383)
119bool(false)
120-- Line 9 --
121string(46) "this text contains some html tags  body   br
122"
123int(451)
124bool(false)
125-- Line 10 --
126string(23) "this is the line with
127"
128int(474)
129bool(false)
130-- Line 11 --
131string(12) " character. "
132int(486)
133bool(true)
134
135-- Testing fgetss() with file opened using rb mode --
136int(486)
137bool(true)
138int(0)
139bool(false)
140-- Reading line by line with allowable tags: <test>, <html>, <?> --
141-- Line 1 --
142string(40) "<test>Testing fgetss() functions</test>
143"
144int(40)
145bool(false)
146-- Line 2 --
147string(10) " {;} this
148"
149int(99)
150bool(false)
151-- Line 3 --
152string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
153"
154int(152)
155bool(false)
156-- Line 4 --
157string(21) "<html> html </html>
158"
159int(193)
160bool(false)
161-- Line 5 --
162string(43) "this line is without any html and php tags
163"
164int(236)
165bool(false)
166-- Line 6 --
167string(79) "this is a line with more than eighty character,want to check line splitting cor"
168int(315)
169bool(false)
170-- Line 7 --
171string(27) "rectly after 80 characters
172"
173int(342)
174bool(false)
175-- Line 8 --
176string(41) "this is the text containing
176 character
177"
178int(383)
179bool(false)
180-- Line 9 --
181string(46) "this text contains some html tags  body   br
182"
183int(451)
184bool(false)
185-- Line 10 --
186string(23) "this is the line with
187"
188int(474)
189bool(false)
190-- Line 11 --
191string(12) " character. "
192int(486)
193bool(true)
194
195-- Testing fgetss() with file opened using rt mode --
196int(486)
197bool(true)
198int(0)
199bool(false)
200-- Reading line by line with allowable tags: <test>, <html>, <?> --
201-- Line 1 --
202string(40) "<test>Testing fgetss() functions</test>
203"
204int(40)
205bool(false)
206-- Line 2 --
207string(10) " {;} this
208"
209int(99)
210bool(false)
211-- Line 3 --
212string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
213"
214int(152)
215bool(false)
216-- Line 4 --
217string(21) "<html> html </html>
218"
219int(193)
220bool(false)
221-- Line 5 --
222string(43) "this line is without any html and php tags
223"
224int(236)
225bool(false)
226-- Line 6 --
227string(79) "this is a line with more than eighty character,want to check line splitting cor"
228int(315)
229bool(false)
230-- Line 7 --
231string(27) "rectly after 80 characters
232"
233int(342)
234bool(false)
235-- Line 8 --
236string(41) "this is the text containing
236 character
237"
238int(383)
239bool(false)
240-- Line 9 --
241string(46) "this text contains some html tags  body   br
242"
243int(451)
244bool(false)
245-- Line 10 --
246string(23) "this is the line with
247"
248int(474)
249bool(false)
250-- Line 11 --
251string(12) " character. "
252int(486)
253bool(true)
254
255-- Testing fgetss() with file opened using r+ mode --
256int(486)
257bool(true)
258int(0)
259bool(false)
260-- Reading line by line with allowable tags: <test>, <html>, <?> --
261-- Line 1 --
262string(40) "<test>Testing fgetss() functions</test>
263"
264int(40)
265bool(false)
266-- Line 2 --
267string(10) " {;} this
268"
269int(99)
270bool(false)
271-- Line 3 --
272string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
273"
274int(152)
275bool(false)
276-- Line 4 --
277string(21) "<html> html </html>
278"
279int(193)
280bool(false)
281-- Line 5 --
282string(43) "this line is without any html and php tags
283"
284int(236)
285bool(false)
286-- Line 6 --
287string(79) "this is a line with more than eighty character,want to check line splitting cor"
288int(315)
289bool(false)
290-- Line 7 --
291string(27) "rectly after 80 characters
292"
293int(342)
294bool(false)
295-- Line 8 --
296string(41) "this is the text containing
296 character
297"
298int(383)
299bool(false)
300-- Line 9 --
301string(46) "this text contains some html tags  body   br
302"
303int(451)
304bool(false)
305-- Line 10 --
306string(23) "this is the line with
307"
308int(474)
309bool(false)
310-- Line 11 --
311string(12) " character. "
312int(486)
313bool(true)
314
315-- Testing fgetss() with file opened using r+b mode --
316int(486)
317bool(true)
318int(0)
319bool(false)
320-- Reading line by line with allowable tags: <test>, <html>, <?> --
321-- Line 1 --
322string(40) "<test>Testing fgetss() functions</test>
323"
324int(40)
325bool(false)
326-- Line 2 --
327string(10) " {;} this
328"
329int(99)
330bool(false)
331-- Line 3 --
332string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
333"
334int(152)
335bool(false)
336-- Line 4 --
337string(21) "<html> html </html>
338"
339int(193)
340bool(false)
341-- Line 5 --
342string(43) "this line is without any html and php tags
343"
344int(236)
345bool(false)
346-- Line 6 --
347string(79) "this is a line with more than eighty character,want to check line splitting cor"
348int(315)
349bool(false)
350-- Line 7 --
351string(27) "rectly after 80 characters
352"
353int(342)
354bool(false)
355-- Line 8 --
356string(41) "this is the text containing
356 character
357"
358int(383)
359bool(false)
360-- Line 9 --
361string(46) "this text contains some html tags  body   br
362"
363int(451)
364bool(false)
365-- Line 10 --
366string(23) "this is the line with
367"
368int(474)
369bool(false)
370-- Line 11 --
371string(12) " character. "
372int(486)
373bool(true)
374
375-- Testing fgetss() with file opened using r+t mode --
376int(486)
377bool(true)
378int(0)
379bool(false)
380-- Reading line by line with allowable tags: <test>, <html>, <?> --
381-- Line 1 --
382string(40) "<test>Testing fgetss() functions</test>
383"
384int(40)
385bool(false)
386-- Line 2 --
387string(10) " {;} this
388"
389int(99)
390bool(false)
391-- Line 3 --
392string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
393"
394int(152)
395bool(false)
396-- Line 4 --
397string(21) "<html> html </html>
398"
399int(193)
400bool(false)
401-- Line 5 --
402string(43) "this line is without any html and php tags
403"
404int(236)
405bool(false)
406-- Line 6 --
407string(79) "this is a line with more than eighty character,want to check line splitting cor"
408int(315)
409bool(false)
410-- Line 7 --
411string(27) "rectly after 80 characters
412"
413int(342)
414bool(false)
415-- Line 8 --
416string(41) "this is the text containing
416 character
417"
418int(383)
419bool(false)
420-- Line 9 --
421string(46) "this text contains some html tags  body   br
422"
423int(451)
424bool(false)
425-- Line 10 --
426string(23) "this is the line with
427"
428int(474)
429bool(false)
430-- Line 11 --
431string(12) " character. "
432int(486)
433bool(true)
434Done
435