1--TEST--
2Test fgetss() function : usage variations - read/write modes
3--SKIPIF--
4<?php
5if (substr(PHP_OS, 0, 3) == 'WIN') {
6    die('skip.. Not valid for Windows');
7}
8?>
9--FILE--
10<?php
11/*
12 Prototype: string fgetss ( resource $handle [, int $length [, string $allowable_tags]] );
13 Description: Gets line from file pointer and strip HTML tags
14*/
15
16/* try fgetss on files which are opened in read/write modes
17    w+, w+b, w+t,
18    a+, a+b, a+t,
19    x+, x+b, x+t
20 reading line by line with allowable tags: <test>, <html>, <?>
21*/
22
23
24echo "*** Testing fgetss() : usage variations ***\n";
25
26/* string with html and php tags */
27$string_with_tags = <<<EOT
28<test>Testing fgetss() functions</test>
29<?php echo "this string is within php tag"; ?> {;}<{> this
30is a heredoc string. <pg>ksklnm@@$$&$&^%&^%&^%&</pg>
31<html> html </html> <?php echo "php"; ?>
32this line is without any html and php tags
33this is a line with more than eighty character,want to check line splitting correctly after 80 characters
34this text contains some html tags <body> body </body> <br> br </br>
35this is the line with \n character.
36EOT;
37
38$filename = dirname(__FILE__)."/fgetss_variation3.tmp";
39
40/* try reading the file opened in different modes of reading */
41$file_modes = array("w+","w+b", "w+t","a+", "a+b", "a+t","x+","x+b","x+t");
42
43for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) {
44  echo "\n-- Testing fgetss() with file opened using $file_modes[$mode_counter] mode --\n";
45
46  /* create an empty file and write the strings with tags */
47  $file_handle = fopen($filename, $file_modes[$mode_counter]);
48  fwrite($file_handle,$string_with_tags); //writing data to the file
49  if(!$file_handle) {
50    echo "Error: failed to open file $filename!\n";
51    exit();
52  }
53
54  // rewind the file pointer to beginning of the file
55  rewind($file_handle);
56  var_dump( ftell($file_handle) );
57  var_dump( filesize($filename) );
58  var_dump( feof($file_handle) );
59
60  /* rewind the file and read the file  line by line with allowable tags */
61  echo "-- Reading line by line with allowable tags: <test>, <html>, <?> --\n";
62  $line = 1;
63  while( !feof($file_handle) ) {
64     echo "-- Line $line --\n"; $line++;
65     var_dump( fgetss($file_handle, 80, "<test>, <html>, <?>") );
66     var_dump( ftell($file_handle) );  // check the file pointer position
67     var_dump( feof($file_handle) );  // check if eof reached
68  }
69
70  // close the file
71  fclose($file_handle);
72
73  // delete the file
74  unlink($filename);
75} // end of for - mode_counter
76
77echo "Done\n";
78?>
79--EXPECTF--
80*** Testing fgetss() : usage variations ***
81
82-- Testing fgetss() with file opened using w+ mode --
83int(0)
84int(445)
85bool(false)
86-- Reading line by line with allowable tags: <test>, <html>, <?> --
87-- Line 1 --
88string(40) "<test>Testing fgetss() functions</test>
89"
90int(40)
91bool(false)
92-- Line 2 --
93string(10) " {;} this
94"
95int(99)
96bool(false)
97-- Line 3 --
98string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
99"
100int(152)
101bool(false)
102-- Line 4 --
103string(21) "<html> html </html>
104"
105int(193)
106bool(false)
107-- Line 5 --
108string(43) "this line is without any html and php tags
109"
110int(236)
111bool(false)
112-- Line 6 --
113string(79) "this is a line with more than eighty character,want to check line splitting cor"
114int(315)
115bool(false)
116-- Line 7 --
117string(27) "rectly after 80 characters
118"
119int(342)
120bool(false)
121-- Line 8 --
122string(46) "this text contains some html tags  body   br
123"
124int(410)
125bool(false)
126-- Line 9 --
127string(23) "this is the line with
128"
129int(433)
130bool(false)
131-- Line 10 --
132string(12) " character. "
133int(445)
134bool(true)
135
136-- Testing fgetss() with file opened using w+b mode --
137int(0)
138int(445)
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(46) "this text contains some html tags  body   br
177"
178int(410)
179bool(false)
180-- Line 9 --
181string(23) "this is the line with
182"
183int(433)
184bool(false)
185-- Line 10 --
186string(12) " character. "
187int(445)
188bool(true)
189
190-- Testing fgetss() with file opened using w+t mode --
191int(0)
192int(445)
193bool(false)
194-- Reading line by line with allowable tags: <test>, <html>, <?> --
195-- Line 1 --
196string(40) "<test>Testing fgetss() functions</test>
197"
198int(40)
199bool(false)
200-- Line 2 --
201string(10) " {;} this
202"
203int(99)
204bool(false)
205-- Line 3 --
206string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
207"
208int(152)
209bool(false)
210-- Line 4 --
211string(21) "<html> html </html>
212"
213int(193)
214bool(false)
215-- Line 5 --
216string(43) "this line is without any html and php tags
217"
218int(236)
219bool(false)
220-- Line 6 --
221string(79) "this is a line with more than eighty character,want to check line splitting cor"
222int(315)
223bool(false)
224-- Line 7 --
225string(27) "rectly after 80 characters
226"
227int(342)
228bool(false)
229-- Line 8 --
230string(46) "this text contains some html tags  body   br
231"
232int(410)
233bool(false)
234-- Line 9 --
235string(23) "this is the line with
236"
237int(433)
238bool(false)
239-- Line 10 --
240string(12) " character. "
241int(445)
242bool(true)
243
244-- Testing fgetss() with file opened using a+ mode --
245int(0)
246int(445)
247bool(false)
248-- Reading line by line with allowable tags: <test>, <html>, <?> --
249-- Line 1 --
250string(40) "<test>Testing fgetss() functions</test>
251"
252int(40)
253bool(false)
254-- Line 2 --
255string(10) " {;} this
256"
257int(99)
258bool(false)
259-- Line 3 --
260string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
261"
262int(152)
263bool(false)
264-- Line 4 --
265string(21) "<html> html </html>
266"
267int(193)
268bool(false)
269-- Line 5 --
270string(43) "this line is without any html and php tags
271"
272int(236)
273bool(false)
274-- Line 6 --
275string(79) "this is a line with more than eighty character,want to check line splitting cor"
276int(315)
277bool(false)
278-- Line 7 --
279string(27) "rectly after 80 characters
280"
281int(342)
282bool(false)
283-- Line 8 --
284string(46) "this text contains some html tags  body   br
285"
286int(410)
287bool(false)
288-- Line 9 --
289string(23) "this is the line with
290"
291int(433)
292bool(false)
293-- Line 10 --
294string(12) " character. "
295int(445)
296bool(true)
297
298-- Testing fgetss() with file opened using a+b mode --
299int(0)
300int(445)
301bool(false)
302-- Reading line by line with allowable tags: <test>, <html>, <?> --
303-- Line 1 --
304string(40) "<test>Testing fgetss() functions</test>
305"
306int(40)
307bool(false)
308-- Line 2 --
309string(10) " {;} this
310"
311int(99)
312bool(false)
313-- Line 3 --
314string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
315"
316int(152)
317bool(false)
318-- Line 4 --
319string(21) "<html> html </html>
320"
321int(193)
322bool(false)
323-- Line 5 --
324string(43) "this line is without any html and php tags
325"
326int(236)
327bool(false)
328-- Line 6 --
329string(79) "this is a line with more than eighty character,want to check line splitting cor"
330int(315)
331bool(false)
332-- Line 7 --
333string(27) "rectly after 80 characters
334"
335int(342)
336bool(false)
337-- Line 8 --
338string(46) "this text contains some html tags  body   br
339"
340int(410)
341bool(false)
342-- Line 9 --
343string(23) "this is the line with
344"
345int(433)
346bool(false)
347-- Line 10 --
348string(12) " character. "
349int(445)
350bool(true)
351
352-- Testing fgetss() with file opened using a+t mode --
353int(0)
354int(445)
355bool(false)
356-- Reading line by line with allowable tags: <test>, <html>, <?> --
357-- Line 1 --
358string(40) "<test>Testing fgetss() functions</test>
359"
360int(40)
361bool(false)
362-- Line 2 --
363string(10) " {;} this
364"
365int(99)
366bool(false)
367-- Line 3 --
368string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
369"
370int(152)
371bool(false)
372-- Line 4 --
373string(21) "<html> html </html>
374"
375int(193)
376bool(false)
377-- Line 5 --
378string(43) "this line is without any html and php tags
379"
380int(236)
381bool(false)
382-- Line 6 --
383string(79) "this is a line with more than eighty character,want to check line splitting cor"
384int(315)
385bool(false)
386-- Line 7 --
387string(27) "rectly after 80 characters
388"
389int(342)
390bool(false)
391-- Line 8 --
392string(46) "this text contains some html tags  body   br
393"
394int(410)
395bool(false)
396-- Line 9 --
397string(23) "this is the line with
398"
399int(433)
400bool(false)
401-- Line 10 --
402string(12) " character. "
403int(445)
404bool(true)
405
406-- Testing fgetss() with file opened using x+ mode --
407int(0)
408int(445)
409bool(false)
410-- Reading line by line with allowable tags: <test>, <html>, <?> --
411-- Line 1 --
412string(40) "<test>Testing fgetss() functions</test>
413"
414int(40)
415bool(false)
416-- Line 2 --
417string(10) " {;} this
418"
419int(99)
420bool(false)
421-- Line 3 --
422string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
423"
424int(152)
425bool(false)
426-- Line 4 --
427string(21) "<html> html </html>
428"
429int(193)
430bool(false)
431-- Line 5 --
432string(43) "this line is without any html and php tags
433"
434int(236)
435bool(false)
436-- Line 6 --
437string(79) "this is a line with more than eighty character,want to check line splitting cor"
438int(315)
439bool(false)
440-- Line 7 --
441string(27) "rectly after 80 characters
442"
443int(342)
444bool(false)
445-- Line 8 --
446string(46) "this text contains some html tags  body   br
447"
448int(410)
449bool(false)
450-- Line 9 --
451string(23) "this is the line with
452"
453int(433)
454bool(false)
455-- Line 10 --
456string(12) " character. "
457int(445)
458bool(true)
459
460-- Testing fgetss() with file opened using x+b mode --
461int(0)
462int(445)
463bool(false)
464-- Reading line by line with allowable tags: <test>, <html>, <?> --
465-- Line 1 --
466string(40) "<test>Testing fgetss() functions</test>
467"
468int(40)
469bool(false)
470-- Line 2 --
471string(10) " {;} this
472"
473int(99)
474bool(false)
475-- Line 3 --
476string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
477"
478int(152)
479bool(false)
480-- Line 4 --
481string(21) "<html> html </html>
482"
483int(193)
484bool(false)
485-- Line 5 --
486string(43) "this line is without any html and php tags
487"
488int(236)
489bool(false)
490-- Line 6 --
491string(79) "this is a line with more than eighty character,want to check line splitting cor"
492int(315)
493bool(false)
494-- Line 7 --
495string(27) "rectly after 80 characters
496"
497int(342)
498bool(false)
499-- Line 8 --
500string(46) "this text contains some html tags  body   br
501"
502int(410)
503bool(false)
504-- Line 9 --
505string(23) "this is the line with
506"
507int(433)
508bool(false)
509-- Line 10 --
510string(12) " character. "
511int(445)
512bool(true)
513
514-- Testing fgetss() with file opened using x+t mode --
515int(0)
516int(445)
517bool(false)
518-- Reading line by line with allowable tags: <test>, <html>, <?> --
519-- Line 1 --
520string(40) "<test>Testing fgetss() functions</test>
521"
522int(40)
523bool(false)
524-- Line 2 --
525string(10) " {;} this
526"
527int(99)
528bool(false)
529-- Line 3 --
530string(44) "is a heredoc string. ksklnm@@$$&$&^%&^%&^%&
531"
532int(152)
533bool(false)
534-- Line 4 --
535string(21) "<html> html </html>
536"
537int(193)
538bool(false)
539-- Line 5 --
540string(43) "this line is without any html and php tags
541"
542int(236)
543bool(false)
544-- Line 6 --
545string(79) "this is a line with more than eighty character,want to check line splitting cor"
546int(315)
547bool(false)
548-- Line 7 --
549string(27) "rectly after 80 characters
550"
551int(342)
552bool(false)
553-- Line 8 --
554string(46) "this text contains some html tags  body   br
555"
556int(410)
557bool(false)
558-- Line 9 --
559string(23) "this is the line with
560"
561int(433)
562bool(false)
563-- Line 10 --
564string(12) " character. "
565int(445)
566bool(true)
567Done
568