0

0

PHP读取文件的常见方法

php中文网

php中文网

发布时间:2016-06-14 00:02:06

|

1233人浏览过

|

来源于php中文网

原创

整理了一下php中读取文件的几个方法,方便以后查阅。

1.fread

  string fread ( int $handle , int $length )

  fread() 从 handle 指向的文件中读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况。

  fread() 返回所读取的字符串,如果出错返回 FALSE。

<?php <br>    <span style="color: #800080;">$filename</span> = "/usr/local/something.txt";<br>    <span style="color: #800080;">$handle</span> = <span style="color: #008080;">fopen</span>(<span style="color: #800080;">$filename</span>, "r");<span style="color: #008000;">//</span><span style="color: #008000;">读取二进制文件时,需要将第二个参数设置成'rb'<br>    <br>    //通过filesize获得文件大小,将整个文件一下子读到一个字符串中</span><span style="color: #008000;"><br></span>    <span style="color: #800080;">$contents</span> = <span style="color: #008080;">fread</span>(<span style="color: #800080;">$handle</span>, <span style="color: #008080;">filesize</span> (<span style="color: #800080;">$filename</span>));<br>    <span style="color: #008080;">fclose</span>(<span style="color: #800080;">$handle</span>);<br>?>


  如果所要读取的文件不是本地普通文件,而是远程文件或者流文件,就不能用这种方法,因为,filesize不能获得这些文件的大小。此时,你需要通过feof()或者fread()的返回值判断是否已经读取到了文件的末尾。

立即学习PHP免费学习笔记(深入)”;

  例如:

<?php <br>    <span style="color: #800080;">$handle</span> = <span style="color: #008080;">fopen</span>('http://www.baidu.com', 'r');<br>    <span style="color: #800080;">$content</span> = '';<br>    <span style="color: #0000ff;">while</span>(!<span style="color: #008080;">feof</span>(<span style="color: #800080;">$handle</span>)){<br>        <span style="color: #800080;">$content</span> .= <span style="color: #008080;">fread</span>(<span style="color: #800080;">$handle</span>, 8080);<br>    }<br>    <span style="color: #0000ff;">echo</span> <span style="color: #800080;">$content</span>;<br>    <span style="color: #008080;">fclose</span>(<span style="color: #800080;">$handle</span>);<br>?>

或者:

<?php <br>    <span style="color: #800080;">$handle</span> = <span style="color: #008080;">fopen</span>('http://www.baidu.com', 'r');<br>    <span style="color: #800080;">$content</span> = '';<br>    <span style="color: #0000ff;">while</span>(<span style="color: #0000ff;">false</span> != (<span style="color: #800080;">$a</span> = <span style="color: #008080;">fread</span>(<span style="color: #800080;">$handle</span>, 8080))){<span style="color: #008000;">//</span><span style="color: #008000;">返回false表示已经读取到文件末尾</span><span style="color: #008000;"><br></span>        <span style="color: #800080;">$content</span> .= <span style="color: #800080;">$a</span>;<br>    }<br>    <span style="color: #0000ff;">echo</span> <span style="color: #800080;">$content</span>;<br>    <span style="color: #008080;">fclose</span>(<span style="color: #800080;">$handle</span>);<br>?>

 

2.fgets

  string fgets ( int $handle [, int $length ] )

  fgets()从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。

<?php <br>    <span style="color: #800080;">$handle</span> = <span style="color: #008080;">fopen</span>('./file.txt', 'r');<br>    <span style="color: #0000ff;">while</span>(!<span style="color: #008080;">feof</span>(<span style="color: #800080;">$handle</span>)){<br>        <span style="color: #0000ff;">echo</span> <span style="color: #008080;">fgets</span>(<span style="color: #800080;">$handle</span>, 1024);<br>    }<br>    <span style="color: #008080;">fclose</span>(<span style="color: #800080;">$handle</span>);<br>?>

  Note: length 参数从 PHP 4.2.0 起成为可选项,如果忽略,则行的长度被假定为 1024。从 PHP 4.3 开始,忽略掉 length 将继续从流中读取数据直到行结束。如果文件中的大多数行都大于 8KB,则在脚本中指定最大行的长度在利用资源上更为有效。从 PHP 4.3 开始本函数可以安全用于二进制文件。早期的版本则不行。

3.fgetss

  string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )

  跟fgets功能一样,但是fgetss会尝试从读取的文本中去掉任何 HTML 和 PHP 标记,可以用可选的第三个参数指定哪些标记不被去掉。

<?php <br>    <span style="color: #800080;">$handle</span> = <span style="color: #008080;">fopen</span>('./file.txt', 'r');<br>    <span style="color: #0000ff;">while</span>(!<span style="color: #008080;">feof</span>(<span style="color: #800080;">$handle</span>)){<br>        <span style="color: #0000ff;">echo</span> <span style="color: #008080;">fgetss</span>(<span style="color: #800080;">$handle</span>, 1024, '<br>');<br>    }<br>    <span style="color: #008080;">fclose</span>(<span style="color: #800080;">$handle</span>);<br>?>

 

4.file

  array file ( string $filename [, int $use_include_path [, resource $context ]] )
  将文件内容读入一个数组中,数组的每一项对应文件中的一行,包括换行符在内。不需要行结束符时可以使用 rtrim() 函数过滤换行符。

<?php <br>    <span style="color: #800080;">$a</span> = <span style="color: #008080;">file</span>('./file.txt');<br>    <span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">$a</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$line</span> => <span style="color: #800080;">$content</span>){<br>        <span style="color: #0000ff;">echo</span> 'line '.(<span style="color: #800080;">$line</span> + 1).':'.<span style="color: #800080;">$content</span>;<br>    }<br>?>


 5.readfile

  int readfile ( string $filename [, bool $use_include_path [, resource $context ]] )

  读入一个文件并写入到输出缓冲。返回从文件中读入的字节数。如果出错返回 FALSE 并且除非是以 @readfile() 形式调用,否则会显示错误信息。

<?php <br>    <span style="color: #800080;">$size</span> = <span style="color: #008080;">readfile</span>('./file.txt');<br>    <span style="color: #0000ff;">echo</span> <span style="color: #800080;">$size</span>;<br>?>

 

6.file_get_contents

  string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )

Kuwebs企业网站管理系统3.1.5 UTF8
Kuwebs企业网站管理系统3.1.5 UTF8

酷纬企业网站管理系统Kuwebs是酷纬信息开发的为企业网站提供解决方案而开发的营销型网站系统。在线留言模块、常见问题模块、友情链接模块。前台采用DIV+CSS,遵循SEO标准。 1.支持中文、英文两种版本,后台可以在不同的环境下编辑中英文。 3.程序和界面分离,提供通用的PHP标准语法字段供前台调用,可以为不同的页面设置不同的风格。 5.支持google地图生成、自定义标题、自定义关键词、自定义描

下载

  将文件读入一个字符串。第三个参数$context可以用来设置一些参数,比如访问远程文件时,设置超时等等。

  另外,file_get_contents相对于以上几个函数,性能要好得多,所以应该优先考虑使用file_get_contents。但是readfile貌似比file_get_contents性能好一点(?),因为它不需要调用fopen。

<?php <br>    <span style="color: #800080;">$ctx</span> = <span style="color: #008080;">stream_context_create</span>(<span style="color: #0000ff;">array</span>( <br>        'http' => <span style="color: #0000ff;">array</span>( <br>            'timeout' => 1    <span style="color: #008000;">//</span><span style="color: #008000;">设置超时</span><span style="color: #008000;"><br></span>            ) <br>        ) <br>    ); <br>    <span style="color: #0000ff;">echo</span> <span style="color: #008080;">file_get_contents</span>("http://www.baidu.com/", 0, <span style="color: #800080;">$ctx</span>); <br>?>


7.fpassthru

   int fpassthru ( resource $handle )

  将给定的文件指针从当前的位置读取到 EOF 并把结果写到输出缓冲区。

<?php <br>    <span style="color: #008080;">header</span>("Content-Type:text/html;charset=utf-8"); <br>    <span style="color: #800080;">$handle</span> = <span style="color: #008080;">fopen</span>('./test2.php', 'r');<br>    <span style="color: #008080;">fseek</span>(<span style="color: #800080;">$handle</span>, 1024);<span style="color: #008000;">//</span><span style="color: #008000;">将指针定位到1024字节处</span><span style="color: #008000;"><br></span>    <span style="color: #008080;">fpassthru</span>(<span style="color: #800080;">$handle</span>);<br>?>

 

8.parse_ini_file

  array parse_ini_file ( string $filename [, bool $process_sections ] )

  parse_ini_file() 载入一个由 filename 指定的 ini 文件,并将其中的设置作为一个联合数组返回。如果将最后的 process_sections 参数设为 TRUE,将得到一个多维数组,包括了配置文件中每一节的名称和设置。process_sections 的默认值是 FALSE。

  注意:

1. 如果 ini 文件中的值包含任何非字母数字的字符,需要将其括在双引号中(")。
2. 有些保留字不能作为 ini 文件中的键名,包括:null,yes,no,true 和 false。值为 null,no 和 false 等效于 "",值为 yes 和 true 等效于 "1"。字符 {}|&~![()" 也不能用在键名的任何地方,而且这些字符在选项值中有着特殊的意义。

test.ini文件内容:

; This is a sample configuration <span style="color: #008080;">file</span><br>; Comments start with ';', <span style="color: #0000ff;">as</span> in php.ini<br><br>[first_section]<br>one = 1<br>five = 5<br>animal = BIRD<br><br>[second_section]<br>path = "/usr/local/bin"<br>URL = "http://www.example.com/~username

test.php内容:

<?php <br>    <span style="color: #800080;">$config</span> = <span style="color: #008080;">parse_ini_file</span>('./test.ini', ture);<br>    <span style="color: #008080;">print_r</span>(<span style="color: #800080;">$config</span>);<br>?>

输出内容:

Array<br>(<br>    [first_section] => Array<br>        (<br>            [one] => 1<br>            [five] => 5<br>            [animal] => BIRD<br>        )<br><br>    [second_section] => Array<br>        (<br>            [path] => /usr/local/bin<br>            [URL] => http://www.example.com/~username<br>        )<br><br>)

 

 

 

几个注意事项:

  1. 鼓励在处理二进制文件时使用 b 标志,即使系统并不需要,这样可以使脚本的移植性更好。 

  2. allow_url_fopen选项激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象例如文件。默认的封装协议提供用 ftp 和 http 协议来访问远程文件,一些扩展库例如 zlib 可能会注册更多的封装协议。出于安全性考虑,此选项只能在 php.ini 中设置。

  3. 如果要打开有特殊字符的 URL (比如说有空格),就需要使用 urlencode() 进行 URL 编码。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

77

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

49

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

21

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

10

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

14

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

26

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

9

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

303

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

23

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 11.8万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号