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
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
async和DOM Script文件加载比较
Jul 20 PHP
PHP添加图片水印、压缩、剪切的封装类
Aug 17 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
Jan 07 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
PHP基于自增数据如何生成不重复的随机数示例
May 19 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 10 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 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 Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
2013/09/10 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
javascript中的this详解
2014/12/08 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
Python中的连接符(+、+=)示例详解
2017/01/13 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
我就是这样学习Python中的列表
2019/06/02 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
pandas的相关系数与协方差实例
2019/12/27 Python
python实现上传文件到linux指定目录的方法
2020/01/03 Python
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
介绍一下Java中标识符的命名规则
2014/02/03 面试题
自我鉴定模板
2013/10/29 职场文书
高三自我评价
2014/02/01 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
十个Python自动化常用操作,即拿即用
2021/05/10 Python
详细总结Python常见的安全问题
2021/05/21 Python
Linux系统下安装PHP7.3版本
2021/06/26 PHP
浅谈redis整数集为什么不能降级
2021/07/25 Redis
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers