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 array_multisort()函数的使用札记
Jul 03 PHP
wamp下修改mysql访问密码的解决方法
May 07 PHP
如何使用php绘制在图片上的正余弦曲线
Jun 08 PHP
使用PHP导出Word文档的原理和实例
Oct 21 PHP
php处理带有中文URL的方法
Jul 11 PHP
PHP递归实现汉诺塔问题的方法示例
Nov 25 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
Laravel框架数据库迁移操作实例详解
Apr 06 PHP
PHP之header函数详解
Mar 02 PHP
解决Laravel使用验证时跳转到首页的问题
Nov 17 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
Linux fgetcsv取得的数组元素为空字符串的解决方法
2011/11/25 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
Jquery基础教程之DOM操作
2015/08/19 Javascript
JavaScript模拟push
2016/03/06 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
探索Vue高阶组件的使用
2018/01/08 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
python 实现批量图片识别并翻译
2020/11/02 Python
水果花束:Fruit Bouquets
2017/12/20 全球购物
升国旗演讲稿
2014/09/05 职场文书
2014年环保工作总结
2014/11/26 职场文书
高三生物教学反思
2016/02/22 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL
pytorch 中nn.Dropout的使用说明
2021/05/20 Python
详解Python常用的魔法方法
2021/06/03 Python
SpringAop日志找不到方法的处理
2021/06/21 Java/Android