中国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读取文件的正确方法(3)
作者:佚名 时间:2007-09-26 15:33 出处:ibmbw 责编:月夜寒箫
              摘要:用PHP读取文件的正确方法(3)

提取整个文件

现在,我们将接触到一些 PHP 的更独特的文件处理功能:用一两行处理大块数据。例如,如何提取文件并在 Web 页面上显示其全部内容?好的,您看到了 fgets 使用循环的示例。但是如何能够使此过程变得更简单?用 fgetcontents 会使过程超级简单,该方法将把整个文件放入一个字符串中。

            

$my_file = file_get_contents("myfilename");

echo $my_file;

虽然它不是最好的做法,但是可以将此命令更简明地写为:

            

echo file_get_contents("myfilename");

本文主要介绍的是如何处理本地文件,但是值得注意的是您还可以用这些函数提取、回显和解析其他 Web 页面。

            

echo file_get_contents("http://127.0.0.1/");

此命令等效于:

            

$fh = fopen("http://127.0.0.1/", "r");

fpassthru($fh);

您一定会查看此命令并认为:“那还是太费力”。PHP 开发人员同意您的看法。因此可以将以上命令缩短为:

            

readfile("http://127.0.0.1/");

readfile 函数将把文件或 Web 页面的全部内容转储到默认的输出缓冲区。默认情况下,如果失败,此命令将打印错误消息。要避免此行为(如果需要),请尝试:

            

@readfile("http://127.0.0.1/");

当然,如果确实需要解析文件,则 file_get_contents 返回的单个字符串可能有些让人吃不消。您的第一反应可能是用 split() 函数将它分解一下。

            

$array = split("\n", file_get_contents("myfile"));

但是既然已经有一个很好的函数为您执行此操作为什么还要这样大费周章?PHP 的 file() 函数一步即可完成此操作:它将返回分为若干行的字符串数组。

            

$array = file("myfile");

应当注意的是,以上两个示例有一点细微差别。虽然 split 命令将删除新行,但是当使用 file 命令(与 fgets 命令一样)时,新行仍将被附加到数组中的字符串上。

但是,PHP 的力量还远不止于此。您可以在一条命令中使用 parse_ini_file 解析整个 PHP 样式的 .ini 文件。parse_ini_file 命令接受类似清单 4 所示的文件。

清单4:样例 .ini 文件

            

; Comment

[personal information]

name = "King Arthur"

quest = To seek the holy grail

favorite color = Blue

[more stuff]

Samuel Clemens = Mark Twain

Caryn Johnson = Whoopi Goldberg

   

以下命令将把此文件转储为数组,然后打印该数组:

            

$file_array = parse_ini_file("holy_grail.ini");

print_r $file_array;

以下输出的是结果:

Listing 5:输出 

            

Array

(

[name] => King Arthur

[quest] => To seek the Holy Grail

[favorite color] => Blue

[Samuel Clemens] => Mark Twain

[Caryn Johnson] => Whoopi Goldberg

)

当然,您可能注意到此命令合并了各个部分。这是默认行为,但是您可以通过将第二个参数传递给 parse_ini_file 轻松地修正它:process_sections,这是一个布尔型变量。将 process_sections 设为 True。

            

$file_array = parse_ini_file("holy_grail.ini", true);

print_r $file_array;

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