关于php类似C语言的文件读取及解析实现功能详解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于php类似C语言的文件读取及解析实现功能详解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2098字,纯文字阅读大概需要3分钟。
内容图文
本文实例讲述了PHP实现类似于C语言的文件读取及解析功能。分享给大家供大家参考,具体如下:$log_file_name = 'D:/static/develop/kuai_zhi/acagrid.com/public/Logs/'.date('Ym').'/'.date('d').'_error.log'; //$log_file_name = 'D:/static/develop/kuai_zhi/acagrid.com/public/Logs/201701/19_error.log'; if(!file_exists($log_file_name)) return; $handle = fopen($log_file_name,'rb'); if (FALSE === $handle) { exit("Failed to open stream to URL"); } // $stream = fread($handle, $length);//从文件当前指针位置,往后读取n个字节长度 //重置文件指针的位置。指定指针的位置,指针位置修改后。读取文件,后面是从这个位置开始读取了 //fseek($handle,105); //fgets表示每次读取文件的一行 $error_log_array = []; while( ($line = fgets($handle) ) !==false){ //每次读取一行 //匹配出现[1],tp日志中用这种表示致命错误类型 if(preg_match("/\[1\]/", $line)){ $error_log_array[] = $line; } } fclose($handle);
需要注意的几个点:
1、如果是使用fwrite,注意避免将原来文件的内容清空掉了。关键是fopen的打开方式。r或者w。
如果使用追加方式则是a标记。
2、fopen的时候,注意判断是否成功打开文件。避免使用feof的时候进入死循环。因为这个函数,当传入进去不是指针,则这个函数永远会返回false
feof的本意是:判断是否为文件结尾。如果是结尾,则返回true。不是结尾返回false。如果恰好传入非法的指针,那么永远不是文件结尾了,一直返回false。
feof()函数,当传入进去的不是指针类型的时候,使用如下判断会出现死循环
while(!feof($fp)){ }
3、fread和fgets。读取文件一行一行读取,则使用fgets。不是按照行读取,则使用fread()读取。
要注意这一点细节:如果没有更多的内容,则返回false,也就是两种情况,如果里面的内容为空。也会返回false。当读取到文件的结尾的时候,这两个函数也是返回false(难怪我们使用feof()使得我们不会发现这个细节,因为这个函数已经帮助我们判断文件结尾了)
4、使用追加方式(即a标记)打开文件,要注意,这种方式下,无法读取文件内容的,只能往里面写入文件。所以针对这个句柄进行fread()是会得到false的
总结是,如果只是仅仅读取文件的内容,就只用读的方式打开,如果是写入新内容进去,则用a的方式打开
现在明白,为什么要分多种模式进行区分了。以前觉得没有用。现在看来,打开的文件方式决定了,你能够针对文件做什么(添加新内容还是读取内容。)
以上就是关于php类似C语言的文件读取及解析实现功能详解的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的关于php类似C语言的文件读取及解析实现功能详解全部内容,希望文章能够帮你解决关于php类似C语言的文件读取及解析实现功能详解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。