php fopen函数以及相关函数

1.fopen
fopen — 打开文件或者URL。
格式:
fopen(string $filename , string $mode)
fopen() 将 filename 指定的名字资源绑定到一个流上。
filename可以是一个本地文件,也可以是一个URL。
如果filename 指定的是一个本地文件,该文件必须是 PHP 可以访问的,并且文件访问权限允许该访问。
如果filename 指定的是一个URL,PHP 将检查并确认 allow_url_fopen 已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。

fopen() 中 mode 的可能值列表


返回值
成功时返回文件指针资源(如何调用fopen()打开的资源),如果打开失败,本函数返回 FALSE。
错误/异常
如果打开失败,会产生一个 E_WARNING 错误。可以通过 @ 来屏蔽错误。
有时我们会看到,fopen中mode值包含一个“b”字符,例如“wb”,这是怎么回事呢?
这是因为:
不同的操作系统家族具有不同的行结束习惯。当写入一个文本文件并想插入一个新行时,需要使用符合操作系统的行结束符号。基于 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' 标记。

fopen中文乱码:iconv('UTF-8', 'GBK', $fileName);

2.PHP fwrite()
fwrite() 函数用于向文件写入字符串,成功返回写入的字符数,否则返回 FALSE 。
3.fread() 函数
1)fread()函数从文件指针 handle 读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件。
4.、feof()函数
      1)feof() 函数检测是否已到达文件末尾 (eof)。
      如果文件指针到了 EOF 或者出错时则返回 TRUE,否则返回一个错误(包括 socket 超时),其它情况则返回 FALSE。我们上面的代码,在获取到$file资源之后,循环判断是否到了文件结尾,没到结尾的话,就继续执行下面的代码。
      2)注意
      提示:feof() 函数对遍历长度未知的数据很有用。
      注意:如果服务器没有关闭由 fsockopen() 所打开的连接,feof() 会一直等待直到超时而返回 TRUE。默认的超时限制是 60 秒,可以使用 stream_set_timeout() 来改变这个值。
      注意:如果传递的文件指针无效可能会陷入无限循环中,因为 EOF 不会返回 TRUE。
5.、fgets()函数
      1)fgets() 函数从文件指针中读取一行。
6.、fclose()
      1) fclose() 函数关闭一个打开文件。
      fclose() 函数关闭该指针指向的文件。如果成功则返回 true,否则返回 false。文件指针必须有效,并且是通过 fopen() 或 fsockopen() 成功打开的。

7.php fopen函数实例

1、使用fopen函数创建文件:
$my_file = 'file.txt';//如果文件不存在(默认为当前目录下)
$handle = fopen($my_file, 'w') or die('Cannot open file: '.$my_file); //implicitly creates file
2、使用fopen函数打开文件:
$my_file = 'file.txt';//假设文件file.txt存在
$handle = fopen($my_file, 'w') or die('Cannot open file: '.$my_file); //open file for writing ('w','r','a')...
3、fopen函数结合fread读取文件:
$my_file = 'file.txt';
$handle = fopen($my_file, 'r');
$data = fread($handle,filesize($my_file));
4、fopen函数结合fwrite函数写文件
$my_file = 'file.txt';
$handle = fopen($my_file, 'w') or die('Cannot open file: '.$my_file);
$data = 'This is the data';
fwrite($handle, $data);
5、fopen函数结合fwrite函数向文件中追加内容:
$my_file = 'file.txt';
$handle = fopen($my_file, 'a') or die('Cannot open file: '.$my_file);
$data = 'New data line 1';
fwrite($handle, $data);
$new_data = "\n".'New data line 2';
fwrite($handle, $new_data);
6、fopen() 函数还可用于打开互联网上的 URL 地址:
<?php
$fh = fopen("http://www.baidu.com/", "r");
if($fh){
  while(!feof($fh)) {
    echo fgets($fh);
  }
}
fclose($fh);
?>
feof() 函数检测是否已到达文件末尾 (eof)。
注意:fopen() 返回的只是一个资源,要想显示打开的页面地址,还需要用 fgets() 函数读取并输出。

猜你喜欢

转载自blog.csdn.net/qq_34206560/article/details/80972540