网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > PHP > PHP技术进阶 > 用 PHP 读取文件的正确方法  

用 PHP 读取文件的正确方法

2007-03-12  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

清单 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
 

网管联盟bitsCN_com

网管u家u.bitscn@com


网管u家u.bitscn@com

以下命令将把此文件转储为数组,然后打印该数组: 网管u家u.bitsCN.com

$file_array = parse_ini_file("holy_grail.ini");
print_r $file_array;
 
网管论坛bbs_bitsCN_com

中国网管联盟bitsCN.com

以下输出的是结果: 网管网www_bitscn_com


Listing 5. 输出

				
Array
(
    [name] => King Arthur
    [quest] => To seek the Holy Grail
    [favorite color] => Blue
    [Samuel Clemens] => Mark Twain
    [Caryn Johnson] => Whoopi Goldberg
)
 

中国网管联盟bitsCN.com


网管论坛bbs_bitsCN_com

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

$file_array = parse_ini_file("holy_grail.ini", true);
print_r $file_array;
 中国网管联盟bitsCN.com 

网管bitscn_com

并且您将获得以下输出:

网管网www.bitscn.com


清单 6. 输出

				
Array
(
    [personal information] => Array
        (
            [name] => King Arthur
            [quest] => To seek the Holy Grail
            [favorite color] => Blue
        )

    [more stuff] => Array
        (
            [Samuel Clemens] => Mark Twain
            [Caryn Johnson] => Whoopi Goldberg
        )

)
 

中国网管联盟bitsCN.com


中国网管论坛bbs.bitsCN.com

PHP 将把数据放入可以轻松解析的多维数组中。

网管网www_bitscn_com

    对于 PHP 文件处理来说,这只是冰山一角。诸如 tidy_parse_file 和 xml_parse 之类的更复杂的函数可以分别帮助您处理 HTML 和 XML 文档。有关这些特殊函数的使用细节,请参阅 参考资料。如果您要处理那些类型的文件,则那些参考资料值得一看,但不必过度考虑本文中谈到的每种可能遇到的文件类型,下面是一些用于处理到目前为止介绍的函数的很好的通用规则。

网管联盟bitsCN@com

最佳实践 网管u家u.bitscn@com

    绝不要假定程序中的一切都将按计划运行。例如,如果您要查找的文件已被移动该当如何?如果权限已被改变而无法读取其内容又当如何?您可以通过使用 file_exists 和 is_readable 预先检查这些问题。

网管联盟bitsCN@com


清单 7. 使用 file_exists 和 is_readable

				
$filename = "myfile";
if (file_exists($filename) && is_readable ($filename)) {
	$fh = fopen($filename, "r");
	# Processing
	fclose($fh);
}
 
中国网管联盟bitsCN.com

网管网www.bitscn.com

但是,在实践中,用这样的代码可能太繁琐了。处理 fopen 的返回值更简单并且更准确。 网管论坛bbs_bitsCN_com

if ($fh = fopen($filename, "r")) {
	# Processing
	fclose($fh);
}
 网管u家u.bitscn@com 

网管联盟bitsCN_com

    由于失败时 fopen 将返回 False,这将确保仅当文件成功打开后才执行文件处理。当然,如果文件不存在或者不可读,您可以期望一个负返回值。这将使这个检查可以检查所有可能遇到的问题。此外,如果打开失败,可以退出程序或让程序显示错误消息。 网管联盟bitsCN@com

    如 fopen 函数一样,file_get_contents、file 和 readfile 函数都在打开失败或处理文件失败时返回 False。fgets、fgetss、fread、fscanf 和 fclose 函数在出错时也返回 False。当然,除 fclose 以外,您可能已经对这些函数的返回值都进行了处理。使用 fclose 时,即使文件处理未正常关闭,也不会执行什么操作,因此通常不必检查 fclose 的返回值。

网管联盟bitsCN@com

由您来选择 网管论坛bbs_bitsCN_com

   PHP 不缺读取和解析文件的有效方法。诸如 fread 之类的典型函数可能在大多数时候都是最佳的选择,或者当 readfile 刚好能满足任务需要时,您可能会发现自己更为 readfile 的简单所吸引。它实际上取决于所要完成的操作。

中国网管联盟bitsCN.com

    如果要处理大量数据,fscanf 将能证明自己的价值并比使用 file 附带 split 和 sprintf 命令更有效率。相反,如果要回显只做了少许修改的大量文本,则使用 file、file_get_contents 或 readfile 可能更合适。使用 PHP 进行缓存或者创建权宜的代理服务器时可能就属于这种情况。

网管u家u.bitsCN.com

    PHP 给您提供了大量处理文件的工具。深入了解这些工具并了解哪些工具最适合于要处理的项目。您已拥有很多的选择,因此好好地利用它们享受使用 PHP 处理文件的乐趣。

网管网www_bitscn_com

原文链接:http://www.ibm.com/developerworks/cn/opensource/os-php-readfiles/index.html 网管网www.bitscn.com

网管联盟bitsCN@com


TAGs   方法   正确   文件   读取   函数   使用   处理   fopen   如果   可以      
 上一篇:使用PHP 快速生成Flash 动画   下一篇:用PHP脚本在Linux系统上读取输入和对文
用 PHP 读取文件的正确方法 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: