16080891(Lamp→研讨会)
打开文件(fopen)
上一篇 /
下一篇 2007-05-08 21:30:16
/ 个人分类:PHP学习笔记
声明:fopen(string filename,string mode[,int use_include_path[,resource zcontext]]
调用fopen函数的时候,需要传递2个,3个或者4个参数.通常使用两个参数.其中第一个参数filename表示要打开的文件名,而第二个参数mode表示打开的方式.不同的打开方式,可以进行的操作是不一样的.
fopen()将filename指定名字绑定到一个流上.如果filename是"scheme://...."的格式,则被当成一个URL,
PHP将搜索协议处理器(也被称为封装协议)来处理此模式.如果该协议尚未注册封装协议,PHP将发出一条信息来帮助检查脚本中潜在的问题并将filename当成一个普通的文件名继续执行下去.
如果PHP认为filename指定的是一个本地文件,将尝试在该文件上打开一个流.该文件必须是PHP可以访问的,因此需要确认文件访问权限是否允许该访问.如果激活了安全模式或者open_basedir则会应用进一步的限制.
如果PHP认为filename指定的是一个已注册的协议,而该协议被注册为一个网络URL,PHP将检查并确认allow_url_fopen已被激活.如果关闭了,PHP将发出一个警告,而fopen的调用则失败.
可以这样理解,如果参数filename以http://开头,则表示打开的是远程WEB服务器上的文件,如果以ftp://开头,则表示要从远程FTP服务器上获取文件,并需要与指定的服务器建立FTP会话.如果前面没有任何前缀,一般情况下表示打开本地文件.
第2个参数mode有多种取值,用来表示文件是读、写还是附加.mode参数具体取值如下:
| mode | 说明 |
|---|
'r' | 只读方式打开,将文件指针指向文件头。 |
'r+' | 读写方式打开,将文件指针指向文件头。 |
'w' | 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'w+' | 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'a' | 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'a+' | 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
|
'x' | 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则fopen()调用失败并返回FALSE,并生成一条E_WARNING级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的open(2)系统调用指定O_EXCL|O_CREAT标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
|
'x+' | 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则fopen()调用失败并返回FALSE,并生成一条E_WARNING级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的open(2)系统调用指定O_EXCL|O_CREAT标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。 |
注意: 不同的操作系统家族具有不同的行结束习惯。当写入一个文本文件并想插入一个新行时,需要使用符合操作系统的行结束符号。基于 Unix 的系统使用\n作为行结束字符,基于 Windows 的系统使用\r\n作为行结束字符,基于 Macintosh 的系统使用\r作为行结束字符。
如果写入文件时使用了错误的行结束符号,则其它应用程序打开这些文件时可能会表现得很怪异。
Windows 下提供了一个文本转换标记('t')可以透明地将\n转换为\r\n。与此对应还可以使用'b'来强制使用二进制模式,这样就不会转换数据。要使用这些标记,要么用'b'或者用't'作为mode参数的最后一个字符。
默认的转换模式依赖于 SAPI 和所使用的 PHP 版本,因此为了便于移植鼓励总是指定恰当的标记。如果是操作纯文本文件并在脚本中使用了\n作为行结束符,但还要期望这些文件可以被其它应用程序例如 Notepad 读取,则在 mode 中使用't'。在所有其它情况下使用'b'。
在操作二进制文件时如果没有指定'b'标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于\r\n字符的奇怪问题。
注意: 为移植性考虑,强烈建议在用fopen()打开文件时总是使用'b'标记。
注意: 再一次,为移植性考虑,强烈建议你重写那些依赖于't'模式的代码使其使用正确的行结束符并改成'b'模式。
如果也需要在include_path中搜寻文件的话,可以将可选的第三个参数use_include_path设为 '1' 或TRUE。
如果打开失败,本函数返回FALSE。
相关阅读:
- 函数变量的作用域 (xile_php, 2007-5-04)
- 日期和时间处理(PHP5手册) (xile_php, 2007-5-04)
- 去除多余空格 (xile_php, 2007-5-04)
- 字符串大小写转换函数 (xile_php, 2007-5-04)
- 字符串比较 (xile_php, 2007-5-05)
- 获取指定字符串( substr() ) (xile_php, 2007-5-05)
- 字符串的查找 (xile_php, 2007-5-05)
- 定位字符串 (xile_php, 2007-5-06)
- 字符串替换 (xile_php, 2007-5-06)
- 检测文件或者目录是否存在(file_exists) (xile_php, 2007-5-08)
导入论坛
收藏
分享给好友
管理
举报
TAG:
PHP学习笔记