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 相关文章推荐
set_include_path在win和linux下的区别
Jan 10 PHP
攻克CakePHP系列三 表单数据增删改
Oct 22 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
PHP数据过滤的方法
Oct 30 PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 PHP
php之readdir函数用法实例
Nov 13 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
Zend Framework动作助手FlashMessenger用法详解
Mar 05 PHP
微信支付开发维权通知实例
Jul 12 PHP
php文件包含目录配置open_basedir的使用与性能详解
Apr 03 PHP
php微信公众号开发之现金红包
Apr 16 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
php 删除cookie和浏览器重定向
2009/03/16 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
为超链接加上disabled后的故事
2010/12/10 Javascript
简易js代码实现计算器操作
2013/04/15 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
2019/05/12 Javascript
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python lambda和Python def区别分析
2014/11/30 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
行政部主管岗位职责
2013/12/28 职场文书
体育系毕业生求职自荐信
2014/04/16 职场文书
2014年民警工作总结
2014/11/25 职场文书
清洁工个人工作总结
2015/03/05 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书