php feof用来识别文件末尾字符的方法


Posted in PHP onAugust 01, 2010

EOF 是非常重要的概念,几乎每种主流编程语言都提供了相应的内置函数,来验证解析器是否到达了文件EOF。在PHP 中,此函数是feof ()。feof ()函数用来确定是否到达资源末尾。它在文件I/O 操作中经常使用。其形式为:
int feof(string resource)
实例如下:

<?php 
$fh = fopen("/home/www/data/users.txt", "rt"); 
while (!feof($fh)) echo fgets($fh); 
fclose($fh); 
?>

bool feof ( resource $handle ):Tests for end-of-file on a file pointer
这个php manual上面的原话。
为了方便,我以前都是这样使用的
<?php 
// if file can not be read or doesn't exist fopen function returns FALSE 
$file = @fopen("no_such_file", "r"); 
// FALSE from fopen will issue warning and result in infinite loop here 
while (!feof($file)) { 
} 
fclose($file); 
?>

确实,这样使用比较简单。但是,如果上面的变量$file不是一个合法的file pointer 或者已经被fclose关闭了的话。
那么在程序的第六行出,就会产生一个waring,并发生死循环。
为什么?
原因就是
Returns TRUE if the file pointer is at EOF or an error occurs (including socket timeout); otherwise returns FALSE.
所以,为了安全起见,最好在使用上面代码的时候 加个判断,is_resource 还是比较安全的。
PHP 相关文章推荐
php处理文件的小例子(解压缩,删除目录)
Feb 03 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
Jun 10 PHP
php中Array2xml类实现数组转化成XML实例
Dec 08 PHP
PHP使用array_fill定义多维数组的方法
Mar 18 PHP
windows8.1下Apache+Php+MySQL配置步骤
Oct 30 PHP
4种PHP异步执行的常用方式
Dec 24 PHP
Zend Framework基本页面布局分析
Mar 19 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
Jun 16 PHP
详解php中curl返回false的解决办法
Mar 18 PHP
Laravel框架实现即点即改功能的方法分析
Oct 31 PHP
apache+php+mysql安装配置方法小结
Aug 01 #PHP
PHP 作用域解析运算符(::)
Jul 27 #PHP
PHP中的integer类型使用分析
Jul 27 #PHP
PHP中的float类型使用说明
Jul 27 #PHP
PHP中的string类型使用说明
Jul 27 #PHP
PHP中的array数组类型分析说明
Jul 27 #PHP
ionCube 一款类似zend的PHP加密/解密工具
Jul 25 #PHP
You might like
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
php数组添加元素方法小结
2014/12/20 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
canvas轨迹回放功能实现
2017/12/20 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
微信小程序简单的canvas裁剪图片功能详解
2019/07/12 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
vue2路由基本用法实例分析
2020/03/06 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python程序设计入门(5)类的使用简介
2014/06/16 Python
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
详解Python中的四种队列
2018/05/21 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
keras多显卡训练方式
2020/06/10 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
CSS3实现swap交换动画
2016/01/19 HTML / CSS
最新党员的自我评价分享
2013/11/04 职场文书
高分子材料与工程专业推荐信
2013/12/01 职场文书
护理学院专科毕业生求职信
2014/06/28 职场文书
学困生转化工作总结
2015/08/13 职场文书