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 相关文章推荐
信用卡效验程序
Oct 09 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
PHP Session机制简介及用法
Aug 19 PHP
PHP中把数据库查询结果输出为json格式简单实例
Apr 09 PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
利用php做服务器和web前端的界面进行交互
Oct 31 PHP
PHP 与 UTF-8 的最佳实践详细介绍
Jan 04 PHP
PHP的自定义模板引擎
Mar 24 PHP
Yii 框架控制器创建使用及控制器响应操作示例
Oct 14 PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 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
php基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
php中怎么搜索相关联数组键值及获取之
2013/10/17 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
PHP表单验证内容是否为空的实现代码
2016/11/14 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
2014/02/13 Javascript
JS获取时间的方法
2015/01/21 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
在vscode中配置python环境过程解析
2019/09/28 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
struct与class的区别
2014/02/03 面试题
《故乡》教学反思
2014/04/10 职场文书
国庆促销活动总结
2014/08/29 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
法制教育演讲稿
2014/09/10 职场文书
辛亥革命观后感
2015/06/02 职场文书
法定代表人身份证明书
2015/06/18 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers