Tools, FAQ, Tutorials:
Issue with "while ($c=fgetc($f))" Loop in PHP
What's Wrong with "while ($c=fgetc($f)) {}" in PHP?
✍: FYIcenter.com
If you are using "while ($c=fgetc($f)) {}" to loop through each character in a file, the loop may end in the middle of the file when there is a "0" character, because PHP treats "0" as Boolean false. To properly loop to the end of the file, you should use "while ( ($c=fgetc($f)) !== false ) {}". Here is a PHP script example on incorrect testing of fgetc():
<?php
$file = fopen("/temp/cgi.log", "w");
fwrite($file,"Remote host: 64.233.179.104.\r\n");
fwrite($file,"Query string: cate=102&order=down&lang=en.\r\n");
fclose($file);
$file = fopen("/temp/cgi.log", "r");
while ( ($char=fgetc($file)) ) {
print($char);
}
fclose($file);
?>
This script will print:
Remote host: 64.233.179.1
As you can see the loop indeed stopped at character "0".
⇒ Reading a File in Binary Mode in PHP
⇐ Reading One Character from a File in PHP
2016-11-27, ∼4710🔥, 0💬
Popular Posts:
How to login to Azure API Management Publisher Dashboard? If you have given access permission to an ...
How to create a navigation file like navigation.xhtml for an EPUB 3.0 book? At least one navigation ...
How to read RSS validation errors at w3.org? If your RSS feed has errors, the RSS validator at w3.or...
How to build a test service operation to dump everything from the "context.Request" object in the re...
What is EPUB 2.0 Metadata "dc:publisher" and "dc:rights" elements? EPUB 2.0 Metadata "dc:publisher" ...