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 面向对象的一个例子
Apr 12 PHP
php中批量删除Mysql中相同前缀的数据表的代码
Jul 01 PHP
PHP版国家代码、缩写查询函数代码
Aug 14 PHP
php替换超长文本中的特殊字符的函数代码
May 22 PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 PHP
一漂亮的PHP图片验证码实例
Mar 21 PHP
PHP中curl_setopt函数用法实例分析
Apr 16 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
May 13 PHP
Laravel学习教程之View模块详解
Sep 18 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
Sep 27 PHP
解决Laravel无法使用COOKIE和SESSION的问题
Oct 16 PHP
PHP isset()及empty()用法区别详解
Aug 29 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
加强版phplib的DB类
2008/03/31 PHP
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
详解React 16 中的异常处理
2017/07/28 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
5款实用的python 工具推荐
2020/10/13 Python
小型女装店的创业计划书
2014/01/09 职场文书
五年级英语教学反思
2014/01/31 职场文书
旷课检讨书3000字
2014/02/04 职场文书
五年级科学教学反思
2014/02/05 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL