PHP读取文件的多种方法
1.传统的方法 fopen, fclose
feof:file、end of file
例子:
$file_handle = fopen("c:\\myfile.txt", "r");//使用fopen打开与文件的连接
while (!feof($file_handle)) { //使用feof判断是否到达文件末尾
$line = fgets($file_handle); //使用fgets按行读取文件内容
echo $line;
}
fclose($file_handle); //最后使用fclose关闭与文件的连接
过程: 1. fopen -> feof -> fgets -> fclose
打开 读取 关闭
注意:如果是从二进制文件读取以获得跨平台兼容性,则应当将 r 更改为 rb
2. 以fgetss取代fgets
fgetss() 函数从打开的文件中读取一行并过滤掉 HTML 和 PHP 标记。
与 fgets() 相同,不同的是 fgetss 尝试从读取的文本中去掉任何 HTML 和 PHP 标记。
例子:
<?php
$file = fopen("test.htm","r");
echo fgetss($file);
fclose($file); ?>
当然也可以通过传递第三个参数来指定哪些标记是允许输出的:
<?php
$file = fopen("test.htm","r");
echo fgetss($file,1024,"<p>,<b>");//<p>和<b>标记将不会被过滤
fclose($file);
?>
详细信息参考:http://www.w3school.com.cn/php/func_filesystem_fgetss.asp
3. 以二进制读取 fread取代fgets
同样需要打开文件连接 fopen
$fh = fopen("c:\\myfile.txt", "rb");//rb是兼容二进制读取
$data = fread($fh, filesize("c:\\myfile.txt"));
fclose($fh);
特别注意:fread()虽然可以通过第二个参数来指定读取文件的长度,但最长只能读取8192个字节(8kb),
如果文件长度超过8k则需要循环读取
4.将整个文件读入到一个字符串的方法 file_get_contents()
详细可见:PHP的file_get_contents()方法,将整个文件读入字符串中
5.将整个文件读入到一个数组中返回 file()
<?php
print_r(file("c:\\abc.txt"));//结果将abc.txt文件的每一行当成数组的每个元素返回
?>
6. 非线性文件处理 fseek
以上函数只允许顺序读取文件,当需要来回跳转到文件的不同部分。这时就得用 fseek 。
5.1. fseek($fh, 0); //跳转回文件的开头
5.2. fseek($fh, 1024);//返回前1024字节前面
从 PHP V4.0 新增功能:
5.3. fseek($fh, 100, SEEK_CUR);//从当前位置向前跳转 100 个字节
5.4. fseek($fh, -100, SEEK_CUR);//向后跳转 100 个字节
5.5. fseek($fh, -100, SEEK_END);//向后跳转至文件末尾前 100 个字节处
参考:http://www.ibm.com/developerworks/cn/opensource/os-php-readfiles/
PHP读取文件的多种方法的更多相关文章
- C++/Php/Python/Shell 程序按行读取文件或者控制台方法总结。
C++/Php/Python/Shell 程序按行读取文件或者控制台方法总结. 一.总结 C++/Php/Python/Shell 程序按行读取文件或者控制台(php读取标准输入:$fp = fope ...
- Day16_95_IO_循环读取文件字节流read()方法(四)
循环读取文件字节流read()方法(四) 使用 int read(byte[] bytes) 循环读取字节流数据 import java.io.FileInputStream; import java ...
- Day16_94_IO_读取文件字节流read()方法(三)
读取文件字节流read()方法(三) int read(byte[] bytes) 返回值为int类型, 该int类型数据表示每一次读取到的有效字节数,也就是读取到了几个字节, 一个都没读取到返回-1 ...
- Day16_94_IO_循环读取文件字节流read()方法(二)
循环读取文件字节流read()方法 通过read()循环读取数据,但是read()每次都只能读取一个字节,频繁读取磁盘对磁盘有伤害,且效率低. import java.io.FileInputStre ...
- Day16_93_IO_FileInputStream_读取文件字节流read()方法(一)
读取文件字节流read()方法 * 文件字节输入流:按照字节方式读取文件 * java.io.* java.io.InputStream; java.io.FileInputStream; read( ...
- PHP读取文件的常见方法
整理了一下PHP中读取文件的几个方法,方便以后查阅. 1.fread string fread ( int $handle , int $length ) fread() 从 handle 指向的文件 ...
- PHP读取文件内容的方法
下面我们就为大家详细介绍PHP读取文件内容的两种方法. 第一种方法:fread函数 <?php $file=fopen('1.txt','rb+'); echo fread($file,file ...
- JAVA 解决 SpringBoot 本地读取文件成功,打包后读取文件失败的方法
SpringBoot 的日常开发中,我们会发现当我们使用 InputStream input = getClass.getResource(path) 读取文件或者模板时,在 ida 中运行 测试的 ...
- php生成html文件的多种方法介绍
我经常会在网上看到有人问怎么将整个动态的网站静态化,其实实现的方法很简单. 代码如下 复制代码 <?php//在你的开始处加入 ob_start(); ob_start(); //以下是你的代 ...
随机推荐
- Vc6.0 编译发生致命链接错误 :不能打开exe的文件
错误: fatal error LNK1104: cannot open file "Debug/CeshiToolBar1.exe" 解决方法:打开任务管理器,找到对应的exe应 ...
- JAVA IO总结及socket简单实现
为了方便理解与阐述,先引入两张图: a.Java IO中常用的类 在整个Java.io包中最重要的就是5个类和一个接口.5个类指的是File.OutputStream.InputStream.Writ ...
- jquery库与其他库冲突的问题解决-jquery.noConflict()
在使用jQuery开发的时候,可能还会使用到其他的JS库,比如Prototype,但多库共存时可能会发生冲突:若是发生冲突后,可以通过以下几种方案进行解决: 一. jQuery库在其他库之前导入,直接 ...
- scvmm2008 错误 2921 0x8007054F
这个错误是由于bits智能传输服务依赖的https 443端口被占用.443端口一般常用于银行.购物网站,是一种加密的http,一般是通过ssl安全套接字来加密的,但是ssl漏洞可能被木马病毒利用. ...
- 21天学通C++学习笔记(七):函数
1. 为什么需要函数 可将应用程序的内容划分成依次调用的逻辑块,让您能够划分和组织程序的执行逻辑,有助于提高可重用性. 2. 基本概念 是子程序,可接受参数,可有返回值. 要让函数执行其任务,必须调用 ...
- html5 表格标签 table tr td
最重要的三个 <table> 表格声明标签 属性: boarder 边框粗细 style 可配合css 使用 <tr> 行标签 table row ...
- eclipse installer 安装的新版本 eclipse 导入旧版本 eclipse 插件
打开旧版本eclipse,选择File -> Export... -> Install -> Installed Software Items to File,点击Next 点击Se ...
- 微信小程序遇到的问题与解决
1.微信开发工具报错 400 (Bad Request) 解决方法: 注:因为开发工具升级 content-type的写法变了 如下代码: header:{ "Content-Typ ...
- [ActionSprit 3.0] FMS客户端与服务器端交互(传参)
客户端as: import flash.net.NetConnection; import flash.events.NetStatusEvent; var nc:NetConnection = ne ...
- Ping程序
一.概述 Ping程序是对两个TCP/IP系统连通性进行测试的基本工具.该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答. 二.格式 大多数TCP/IP实现都在内核中直接支持Pin ...