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 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
一个简单的MySQL数据浏览器
Oct 09 PHP
PHP用户指南-cookies部分
Oct 09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
Jan 02 PHP
PHP的PSR规范中文版
Sep 28 PHP
浅析PHP的静态成员函数效率更高的原因
Jun 13 PHP
Destoon模板制作简明教程
Jun 20 PHP
Laravel 5.0 发布 新版本特性详解
Feb 10 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
Nov 10 PHP
php利用fsockopen GET/POST提交表单及上传文件
May 22 PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 08 PHP
php实现银联商务公众号+服务窗支付的示例代码
Oct 12 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
在JavaScript中遭遇级联表达式陷阱
2007/03/08 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
Cython 三分钟入门教程
2009/09/17 Python
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
Python class的继承方法代码实例
2020/02/14 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
医学院学生的自我评价分享
2013/11/19 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
毕业实习感受与体会
2015/05/26 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书