中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
用PHP读取文件的正确方法(2)
作者:佚名 时间:2007-09-26 15:33 出处:ibmbw 责编:月夜寒箫
              摘要:用PHP读取文件的正确方法(2)

假定文件大小不超过 8 KB,则以下代码应当能将整个文件读入一个字符串。

            

$fh = fopen("myfile", "rb");

$data = fread($fh, filesize("myfile"));

fclose($fh);

如果文件长度大于此值,则只能使用循环将其余内容读入。

备注:使用二进制数据

注意:此函数的示例已经使用了略微不同于 fopen 的参数。当处理二进制数据时,始终要记得将 b 选项包含在 fopen 中。如果跳过这一点,Microsoft® Windows® 系统可能无法正确处理文件,因为它们将以不同的方式处理新行。如果处理的是 Linux® 系统(或其他某个 UNIX® 变种),则这可能看似没什么关系。但即使不是针对 Windows 开发的,这样做也将获得良好的跨平台可维护性,并且也是应当遵循的一个好习惯。

fscanf

回到字符串处理,fscanf 同样遵循传统的 C 文件库函数。如果您不熟悉它,则 fscanf 将把字段数据从文件读入变量中。

            

list ($field1, $field2, $field3) = fscanf($fh, "%s %s %s");

此函数使用的格式字符串在很多地方都有描述(如 PHP.net 中),故在此不再赘述。可以这样说,字符串格式化极为灵活。值得注意的是所有字段都放在函数的返回值中。(在 C 中,它们都被作为参数传递。)

fgetss

fgetss 函数不同于传统文件函数并使您能更好地了解 PHP 的力量。该函数的功能类似于 fgets 函数,但将去掉发现的任何 HTML 或 PHP 标记,只留下纯文本。查看如下所示的 HTML 文件。

清单2:样例 HTML 文件

            







If you understand what "Cause there ain't no one for to give you no pain"

means then you listen to too much of the band America





 

    

然后通过 fgetss 函数过滤它。

清单3:使用 fgetss

            

$file_handle = fopen("myfile", "r");

while (!feof($file_handle)) {

echo = fgetss($file_handle);

}

fclose($file_handle);

以下是输出:

            

My title

If you understand what "Cause there ain't no one for to give you no pain"

means then you listen to too much of the band America

fpassthru 函数

无论怎样读取文件,您都可以使用 fpassthru 将其余数据转储到标准输出通道。

            

fpassthru($fh);

此外,此函数将打印数据,因此无需使用变量获取数据。

非线性文件处理:跳跃访问

当然,以上函数只允许顺序读取文件。更复杂的文件可能要求您来回跳转到文件的不同部分。这时就用得着 fseek 了。

            

fseek($fh, 0);

以上示例将跳转回文件的开头。如果不需要完全返回 —— 我们可设定返回千字节 —— 然后就可以这样写:

            

fseek($fh, 1024);

从 PHP V4.0 开始,您有一些其他选项。例如,如果需要从当前位置向前跳转 100 个字节,则可以尝试使用:

            

fseek($fh, 100, SEEK_CUR);

类似地,可以使用以下代码向后跳转 100 个字节:

            

fseek($fh, -100, SEEK_CUR);

如果需要向后跳转至文件末尾前 100 个字节处,则应使用 SEEK_END。

            

fseek($fh, -100, SEEK_END);

在到达新位置后,可以使用 fgets、fscanf 或任何其他方法读取数据。

注:不能将 fseek 用于引用 URL 的文件处理。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有