2.7.5 读取一个字符:fgetc()
文件处理的另一个方法是从一个文件中一次读取一个字符。可以使用fgetc()函数来实现。它具有一个文件指针参数,这也是该函数的唯一参数,而且它将返回文件的下一个字符。我们可以使用具有fgetc()函数的循环来代替原来脚本中的while循环,如下所示:
while(!feof($fp)){
$char=fgetc($fp);
if(!feof($fp))
echo($char=="\n"?"<br/>":$char);
}
}
这段代码使用fgetc()函数从文件中一次读取一个字符,并且将该字符保存在$char中,直到文件结束。然后再用HTML的换行符(<br/>)替换文本中的行结束符(\n)。
这样做仅仅是为了整理输出格式。如果输出文件的记录之间带有\n,那么整个文件将显示在一行中(试一下就会知道)。Web浏览器并不会表示空格,例如新行。因此你必须用HTML的换行符(<br/>)替换文本中的行结束符(\n)。我们可以使用三元运算符来完成此操作。
使用fgetc()函数的一个缺点就是它返回文件结束符EOF,而fgets()则不会。读取出字符后还需要判断feof(),因为我们并不希望将文件结束符EOF回显到浏览器中。
如果不是为了某些原因需要对文件逐个字符进行处理,这种逐个字符读取的方法现实意义并不大。