php 使用fseek()读取文件中的部分内容

时间:2016-08-21
php在读取文件事,有时候我们并不需要将所有文件内容读取出来,而只需要读取部分类容,比如说读取最开始几行或只读取前N个字符或从第N个字符开始读取M个字符等等,这个时候我们可以使用fseek()函数来实现,具体实现方法请看下面。

比如现在有这样一个文件manongjc.txt,其内容如下:

manongjc,php,css,java,mysql

我们只需要读取"php"字符串,这时候就可以使用fseek()函数。下面我们来介绍一下fseek()函数。

fseek()函数用于在打开的文件中定位。

该函数把文件指针从当前位置向前或向后移动到新的位置,新位置从文件头开始以字节数度量。

如果成功该函数返回 0,如果失败则返回 -1。请注意,移动到文件末尾(EOF)之后的位置不会产生错误。

语法:

fseek(file,offset,whence)

参数:

参数 描述
file 必需。规定要在其中定位的文件。
offset 必需。规定新的位置(从文件头开始以字节数度量)。
whence 可选。(PHP 4 中新增的)。 可能的值:
  • SEEK_SET - 设定位置等于 offset。默认。
  • SEEK_CUR - 设定位置为当前位置加上 offset。
  • SEEK_END - 设定位置为文件末尾(EOF)加上 offset(要移动到文件末尾之前的位置,offset 必须是一个负值)。

对fseek函数进行了说明和讲解后,相信要实现只读取文件中特定字符应该是很容易的事情了,具体实现代码如下:

<?php
/* http://www.manongjc.com/article/1383.html */
$myfile = "./test.txt";
$openfile = fopen ($myfile, "r") or die ("Couldn *** open the file");
fseek ($openfile, 9);
for($i=0;$i<3;$i++){
 $chunk = fgetc ($openfile);
 echo $chunk;
}

?>

首先使用fseek函数将文件指针定位到第九个字符的位置,然后使用fgetc逐个字符读取文件里面的三个字符(这里读取三个字符使用到for循环)。