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安装全攻略:APACHE
Oct 09 PHP
PHP 时间日期操作实战
Aug 26 PHP
解析php中如何直接执行SHELL
Jun 28 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
Nov 26 PHP
php 获取页面中指定内容的实现类
Jan 23 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
php生成酷炫的四个字符验证码
Apr 22 PHP
手把手编写PHP框架 深入了解MVC运行流程
Sep 19 PHP
PHP jQuery+Ajax结合写批量删除功能
May 19 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 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
PHP的FTP学习(一)
2006/10/09 PHP
destoon找回管理员密码的方法
2014/06/21 PHP
php实现异步数据调用的方法
2015/12/24 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
2019/05/23 jQuery
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
python中的itertools的使用详解
2020/01/13 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
HTML5样式控制示例代码
2013/11/27 HTML / CSS
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
Go语言并发编程 sync.Once
2021/10/16 Golang
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python