读取文件的函数总结

首先,用fopen($fp)打开文件。

然后,用以下介绍的函数读取文件。

最后,用fclose($fp)关闭文件。

一、每次读取一行数据:fgets( )、fgetss( )、fgetcsv( ) 

1、fgets( ):每次读一行

$fp=fopen("$DOCUMENT_ROOT/phptest/orders/orders.txt",'rb');
while(!feof($fp)){                // 文件结束的测试条件
$order=fgets($fp,999);        // 
echo $order."<br />";
}

2、fgetss()

函数原型:string fgetss(resource fp, int length, string[allowable_tages])

fgetss()函数与fgets()非常相似,但是它可以过滤字符串中包含的PHP和HTML标记。如果要过滤任何特殊的标记,可以将它们包含在allowalbe_tags字符串中。当读取由别人所编写的文件或包含用户输入的文件时,出于操作安全的考虑,可以使用fgetss()函数。


3、fgetcsv()

函数原型:array fgetcsv(resource fp,int length[,string delimiter,string enclosure])

当在文件中使用了定界符时,可以用fgetcsv()函数将文件分成多行。

参数length应该比要读的文件中最长数据行的字符数大。

enclosure参数用来指定每行中封闭每一个域的字符。如果没有指定任何字符,在默认情况下,这个字符就是双引号。

二、读取整个文件:readfile()、fpassthru()、file()

1、readfile()

函数原型:int readfile(string filename [, int user_include_path] [, resource context]);

第二个可选参数制定了PHP是否应该在include_path中查找文件,这一点与fopen()函数一样。

可选的context参数只有在文件被远程打开时(如通过HTTP)才使用。

2、fpassthru()

$fp=fopen("$DOCUMENT_ROOT/phptest/orders/orders.txt",'rb');

fpassthru($fp);

如果读操作成功,将返回true,否则返回false。

3、file()

$filearray=file("$DOCUMENT_ROOT/phptest/orders/orders.txt");

这行代码可将整个文件读入到一个名为$filearray的数组中。文件中的每一行都将作为一个元素保存在这个数组中。

但是,在PHP的早期版本中,该函数对二进制文件并不是安全的。

4、fiel_get_contents()

这个函数与readfile()相同,但是该函数将以字符串的形式返回文件内容,而不是将文件内容回显到浏览器中。


三、读取一个字符:fgetc()


$fp=fopen("$DOCUMENT_ROOT/phptest/orders/orders.txt",'rb');
while(!feof($fp)){
$char=fgetc($fp);
if(!feof($fp)){
echo ($char=="\n" ? "<br />" : $char);
}
}

缺点:它返回文件结束符EOF,而fgets()则不会。读取出字符后还需要判断feof(),因为我们并不希望将文件结束符EOF回显到浏览器中。


四、读取任意长度:fread()

函数原型:string fread(resource fp, int length);

使用该函数时,它或者是读满了length参数所指定的字节数,或是读到了文件末尾或网络数据包的结束。


五、其他有用的文件函数

1、查看文件是否存在:file_exists()

如果希望在不打开文件的前提下,检查文件是否存在,可以使用该函数。

2、确定文件大小:filesize()

filesize($fp);

它以字节为单位返回一个文件的大小,结合fread(),可以使用它们一次读取整个文件。

如以下代码:

$fp=fopen("$DOCUMENT_ROOT/phptest/orders/orders.txt",'rb');

echo nl2br(fread($fp, filesize("$DOCUMENT_ROOT/phptest/orders/orders.txt")));

nl2br()函数将输出的\n字符转换为HTML的换行符<br />

3、删除一个文件:unlink()

例如:unlink("$DOCUMENT_ROOT/phptest/orders/orders.txt");

如果无法删除这个文件,则返回false。

通常,如果对该文件的访问权限不够或者该文件不存在,该函数将返回false。

4、在文件中定位:rewind()、fseek()、ftell()

rewind()函数可以将文件指针复位到文件的开始。

ftell()函数可以以字节为单位报告文件指针当前在文件中的位置。也可以使用该函数

将文件指针指向文件的某个位置:int fseek(resource fp, int offset, int whence);

调用该函数可以将文件指针fp从whence位置offset个字节。whence是一个可选参数,

默认值SEEK_SET表示文件的开始处,SEEK_CUR表示文件指针的当前位置、

SEEK_END表示文件的结束。







  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值