PHP读取文件的多种方法

时间:2022-12-30 12:58:55

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读取文件的多种方法的更多相关文章

  1. C&plus;&plus;&sol;Php&sol;Python&sol;Shell 程序按行读取文件或者控制台方法总结。

    C++/Php/Python/Shell 程序按行读取文件或者控制台方法总结. 一.总结 C++/Php/Python/Shell 程序按行读取文件或者控制台(php读取标准输入:$fp = fope ...

  2. Day16&lowbar;95&lowbar;IO&lowbar;循环读取文件字节流read&lpar;&rpar;方法&lpar;四&rpar;

    循环读取文件字节流read()方法(四) 使用 int read(byte[] bytes) 循环读取字节流数据 import java.io.FileInputStream; import java ...

  3. Day16&lowbar;94&lowbar;IO&lowbar;读取文件字节流read&lpar;&rpar;方法&lpar;三&rpar;

    读取文件字节流read()方法(三) int read(byte[] bytes) 返回值为int类型, 该int类型数据表示每一次读取到的有效字节数,也就是读取到了几个字节, 一个都没读取到返回-1 ...

  4. Day16&lowbar;94&lowbar;IO&lowbar;循环读取文件字节流read&lpar;&rpar;方法&lpar;二&rpar;

    循环读取文件字节流read()方法 通过read()循环读取数据,但是read()每次都只能读取一个字节,频繁读取磁盘对磁盘有伤害,且效率低. import java.io.FileInputStre ...

  5. Day16&lowbar;93&lowbar;IO&lowbar;FileInputStream&lowbar;读取文件字节流read&lpar;&rpar;方法&lpar;一&rpar;

    读取文件字节流read()方法 * 文件字节输入流:按照字节方式读取文件 * java.io.* java.io.InputStream; java.io.FileInputStream; read( ...

  6. PHP读取文件的常见方法

    整理了一下PHP中读取文件的几个方法,方便以后查阅. 1.fread string fread ( int $handle , int $length ) fread() 从 handle 指向的文件 ...

  7. PHP读取文件内容的方法

    下面我们就为大家详细介绍PHP读取文件内容的两种方法. 第一种方法:fread函数 <?php $file=fopen('1.txt','rb+'); echo fread($file,file ...

  8. JAVA 解决 SpringBoot 本地读取文件成功,打包后读取文件失败的方法

    SpringBoot 的日常开发中,我们会发现当我们使用  InputStream input = getClass.getResource(path) 读取文件或者模板时,在 ida 中运行 测试的 ...

  9. php生成html文件的多种方法介绍

    我经常会在网上看到有人问怎么将整个动态的网站静态化,其实实现的方法很简单.  代码如下 复制代码 <?php//在你的开始处加入 ob_start(); ob_start(); //以下是你的代 ...

随机推荐

  1. JS鼠标移入,移出事件

    该事件的效果就像百度首页的设置选项,当鼠标移入,移出时的效果,废话不多说了,直接上码. <!DOCTYPE html><html lang="en">&lt ...

  2. winscp私钥如何生成

    问题1,我用SecureCRT 5.0的自带工具生成了密钥和公钥(分别是不带后缀名的密钥文件和.pub的公钥文件),传上服务器也可以正常使用.     但是我用其它一些客户端工具连接时需要的密钥文件是 ...

  3. C&num; Winform 拖放操作

    http://www.cnblogs.com/imlions/p/3189773.html 在开发程序的时候,为了提高用户的使用体验,或满足相关用户的功能,总是离不开拖放功能.而本文是总结winfor ...

  4. vue&period;js之生命周期,防止闪烁,计算属性的使用,vue实例简单方法和循环重复数据

    摘要:今天是比较糟糕的一天没怎么学习,原因是学校的wifi连不上了~~.今天学习一下vue的生命周期,如何防止闪烁(也就是用户看得到花括号),计算属性的使用,vue实例简单方法,以及当有重复数据时如何 ...

  5. img 兼容问题 css图片与图片之间总是会存在缝隙

    解决方案: 法宝一:定义图片img标签vertical-align:bottom,vertical-align:middle,vertical-align:top. img{vertical-alig ...

  6. json&lowbar;decode&lpar;&rpar;相关报错

    错误描述 PHP Warning:  json_decode() expects parameter 1 to be string, array given in xxx.php on line 29 ...

  7. 利用MyBatis的动态SQL特性抽象统一SQL查询接口

    1. SQL查询的统一抽象 MyBatis制动动态SQL的构造,利用动态SQL和自定义的参数Bean抽象,可以将绝大部分SQL查询抽象为一个统一接口,查询参数使用一个自定义bean继承Map,使用映射 ...

  8. OPENVPN2&period;3配置文档官方说明

    openvpn Section: Maintenance Commands (8)Index NAME openvpn - secure IP tunnel daemon. SYNOPSIS open ...

  9. 什么是展uv

    uvw是对应三维模型x.y.z坐标,就像模型的皮肤一样,为了便于绘制贴图,需要将UV尽量展平 展UV就是把你建好的模型展开成平面,别人就可以在那平面上做材质,皮肤等,这些东西.例如展一个正方体的UV, ...

  10. 解决VMware10虚拟机客户机操作系统无苹果MacOSX

    安装完VMwareWorkstation10.0.3虚拟机,满心希望安装苹果系统MAC OS X 10.9 Mavericks玩一把,却发现VMware10虚拟机客户机操作系统选项里并没有苹果Mac ...