1--TEST-- 2Test fgetss() function : usage variations - read/write modes, file pointer at EOF 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*/ 21 22 23echo "*** Testing fgetss() : usage variations ***\n"; 24 25/* string with html and php tags */ 26$string_with_tags = <<<EOT 27<test>Testing fgetss() functions</test> 28<?php echo "this string is within php tag"; ?> {;}<{> this 29is a heredoc string. <pg>ksklnm@@$$&$&^%&^%&^%&</pg> 30<html> html </html> <?php echo "php"; ?> 31this line is without any html and php tags 32this is a line with more than eighty character,want to check line splitting correctly after 80 characters 33this text contains some html tags <body> body </body> <br> br </br> 34this is the line with \n character. 35EOT; 36 37$filename = dirname(__FILE__)."/fgetss_variation5.tmp"; 38 39/* try reading the file opened in different modes of reading */ 40$file_modes = array("w+","w+b", "w+t","a+", "a+b", "a+t","x+","x+b","x+t"); 41 42for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) { 43 echo "\n-- Testing fgetss() with file opened using $file_modes[$mode_counter] mode --\n"; 44 45 /* create an empty file and write the strings with tags */ 46 $file_handle = fopen($filename, $file_modes[$mode_counter]); 47 fwrite($file_handle,$string_with_tags); //writing data to the file 48 if(!$file_handle) { 49 echo "Error: failed to open file $filename!\n"; 50 exit(); 51 } 52 // rewind the file pointer to begining of the file 53 var_dump( filesize($filename) ); 54 var_dump( rewind($file_handle) ); 55 var_dump( ftell($file_handle) ); 56 var_dump( feof($file_handle) ); 57 58 echo "-- Reading when file pointer points to EOF --\n"; 59 var_dump( fseek($file_handle,0,SEEK_END) ); // now file pointer at end 60 var_dump( ftell($file_handle) ); //ensure file pointer at end 61 var_dump( fgetss($file_handle) ); // try to read 62 var_dump( ftell($file_handle) ); // find out file position 63 var_dump( feof($file_handle) ); // ensure that file pointer is at eof 64 65 // now file is at the end try reading with length and allowable tags,expecting false 66 var_dump( fgetss($file_handle, 80, "<test>, <html>, <?>") ); 67 var_dump( ftell($file_handle) ); // find out file position 68 var_dump( feof($file_handle) ); // ensure that file pointer is at eof 69 70 71 // close the file 72 fclose($file_handle); 73 74 // delete the file 75 unlink($filename); 76} // end of for - mode_counter 77 78echo "Done\n"; 79?> 80--EXPECTF-- 81*** Testing fgetss() : usage variations *** 82 83-- Testing fgetss() with file opened using w+ mode -- 84int(445) 85bool(true) 86int(0) 87bool(false) 88-- Reading when file pointer points to EOF -- 89int(0) 90int(445) 91bool(false) 92int(445) 93bool(true) 94bool(false) 95int(445) 96bool(true) 97 98-- Testing fgetss() with file opened using w+b mode -- 99int(445) 100bool(true) 101int(0) 102bool(false) 103-- Reading when file pointer points to EOF -- 104int(0) 105int(445) 106bool(false) 107int(445) 108bool(true) 109bool(false) 110int(445) 111bool(true) 112 113-- Testing fgetss() with file opened using w+t mode -- 114int(445) 115bool(true) 116int(0) 117bool(false) 118-- Reading when file pointer points to EOF -- 119int(0) 120int(445) 121bool(false) 122int(445) 123bool(true) 124bool(false) 125int(445) 126bool(true) 127 128-- Testing fgetss() with file opened using a+ mode -- 129int(445) 130bool(true) 131int(0) 132bool(false) 133-- Reading when file pointer points to EOF -- 134int(0) 135int(445) 136bool(false) 137int(445) 138bool(true) 139bool(false) 140int(445) 141bool(true) 142 143-- Testing fgetss() with file opened using a+b mode -- 144int(445) 145bool(true) 146int(0) 147bool(false) 148-- Reading when file pointer points to EOF -- 149int(0) 150int(445) 151bool(false) 152int(445) 153bool(true) 154bool(false) 155int(445) 156bool(true) 157 158-- Testing fgetss() with file opened using a+t mode -- 159int(445) 160bool(true) 161int(0) 162bool(false) 163-- Reading when file pointer points to EOF -- 164int(0) 165int(445) 166bool(false) 167int(445) 168bool(true) 169bool(false) 170int(445) 171bool(true) 172 173-- Testing fgetss() with file opened using x+ mode -- 174int(445) 175bool(true) 176int(0) 177bool(false) 178-- Reading when file pointer points to EOF -- 179int(0) 180int(445) 181bool(false) 182int(445) 183bool(true) 184bool(false) 185int(445) 186bool(true) 187 188-- Testing fgetss() with file opened using x+b mode -- 189int(445) 190bool(true) 191int(0) 192bool(false) 193-- Reading when file pointer points to EOF -- 194int(0) 195int(445) 196bool(false) 197int(445) 198bool(true) 199bool(false) 200int(445) 201bool(true) 202 203-- Testing fgetss() with file opened using x+t mode -- 204int(445) 205bool(true) 206int(0) 207bool(false) 208-- Reading when file pointer points to EOF -- 209int(0) 210int(445) 211bool(false) 212int(445) 213bool(true) 214bool(false) 215int(445) 216bool(true) 217Done 218