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/

时间: 2024-08-06 03:46:54

PHP读取文件的多种方法的相关文章

解决python疑难杂症python—文件迭代操作,教你读取文件的多种方法

要读取一个文件有很多种方式:按字节数读取.按行读取.按段落读取.一次性全部读取等等.如果不是深入的操作文件数据,按行读.写是最通用的方式. 以下是下面测试时使用的文件a.txt的内容: 1 first line 2 second line 3 third line 在Python中,readline()函数可以一次读取一行,且每次都是前进式的读取一行,读到文件结尾的时候会返回空字符串. 1 >>> f = open('a.txt') 2 >>> f.readline()

Java逐行读取文件有多少种方法?

如果每个线程使用的变量都是其它线程不会读取或修改的,那么就不存在一致性问题.同样,如果变量是只读的,多个线程同时读取该变量也不会有一致性问题.否则,将会出现不一致性问题.为了解决数据不一致问题,必须引入某些机制使线程间同步. 当变量修改时间多于一个存储器访问周期,同时读.写操作又相互交替时,潜在的不一致性就会出现.如下图所示: 此时,线程B读取到的数据是错误的.使用一把锁能够解决上述问题: 下面介绍线程的三种同步机制: 1.互斥量pthread_mutex_t 互斥量就是锁,对某段临界区进行加锁

nodejs常见的读取文件内容的方法

nodejs常见的读取文件内容的方法 by 伍雪颖 var fs = require('fs'); var rs = fs.createReadStream('test.md'); var data = ''; rs.on("data",function(chunk) { data += chunk; }); rs.on("end",function() { console.log(data); });

PHP读取文件内容的方法

下面我们就为大家详细介绍PHP读取文件内容的两种方法. 第一种方法:fread函数 <?php $file=fopen('1.txt','rb+'); echo fread($file,filesize('1.txt')); fclose($file); 这里我们先是通过fopen打开1.txt这个文件,然后用fread函数读取txt文件的内容. 注:fread中第一个参数表示读取到的文件,第二个参数表示读取文件的长度. 如果我们想要读取文件的所有内容,就需要用到filesize函数来获取文件所

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

我经常会在网上看到有人问怎么将整个动态的网站静态化,其实实现的方法很简单.  代码如下 复制代码 <?php//在你的开始处加入 ob_start(); ob_start(); //以下是你的代码 //在结尾加入 ob_end_clean(),并把本页输出到一个变量中 $temp = ob_get_contents(); ob_end_clean(); //写入文件 $fp = fopen(‘文件名’,’w’); fwrite($fp,$temp) or die(‘写文件错误’); ?> 这只

shell脚本按行读取文件内容的方法

方法1: exec <file sum=0 while read line;do cmd done 方法2: cat ${FILE_PATH} |while read line do cmd done 方法3: while read line do cmd done<FILE

java中获得当前文件路径多种方法

public String getClassPath(){ String path=""; try { path=new File(getClass().getClassLoader().getResource("").toURI()).getPath(); }catch (URISyntaxException ex) {} return path; } 取程序运行时的目录路径.即程序在那里双击或BAT文件所在的路径 System.getProperties(&qu

PHP如何正确读取文件内容?解析

PHP 读取文件的多种方法,一起来看看吧. 处理诸如 PHP 之类的现代编程语言的乐趣之一就是有大量的选项可用.PHP 可以轻松地赢得 Perl 的座右铭“There's more than one way to do it”(并非只有一种方法可做这件事),尤其是在文件处理上.但是在这么多可用的选项中,哪一种是完成作业的最佳工具?当然,实际答案取决于解析文件的目标,因此值得花时间探究所有选项. 回页首 传统的 fopen 方法 fopen 方法可能是以前的 C 和 C++ 程序员最熟悉的,因为如

PHP读取文件多种方法与实例教程

分享下PHP中读取文件的八种方法,收集了很多php读取文件的例子,小而经典,是学习php文件操作的好资料. PHP中读取文件的几个方法,备阅.1.freadstring fread ( int $handle , int $length )fread() 从 handle 指向的文件中读取最多 length 个字节.该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到