fpassthru()

1. 定义

从当前文件指针开始,读取剩余的所有数据,并把结果写在输出缓冲区(直接输出结果)。 成功时返回输出的字符字节数,出错时返回FALSE。

注意:

  • 如果只是想将文件的内容输出到缓冲区,应使用readfile()函数,省去fopen()函数的调用
  • 如果已经向文件句柄中写入数据,就必须调用函数rewind()来重置文件指针至文件头

2. 语法

fpassthru ( resource $handle ) : int

3. 参数说明

参数 可选性 数据类型 描述
$handle 必需 资源类型 文件句柄,通过fopen()函数打开的文件资源

4. 示例

<?php

// fpassthru()
// 从当前文件指针开始,读取剩余的所有数据,并把结果写在输出缓冲区(直接输出结果)

$handle = fopen(__FILE__, 'rb');
fgets($handle);// 文件指针跳过一行
fpassthru($handle);
/* 输出:
(本文件的所有内容)
*/

/* 打开二进制文件,例如图片,需要在浏览器执行
$filepath = 'https://www.jisuapi.com/upload/image/201912/25100733_50943.jpg?v=20160624';
$handle = fopen($filepath, 'rb');
header("Content-Type: image/png");
header("Content-Length: " . filesize($filepath));
fpassthru($handle);
 */

// 打开某个网站
$handle = fopen('https://www.jisuapi.com/', 'rb');
fpassthru($handle);
/* 输出:
(该网址的源代码)
*/

fclose($handle);

5. 延展阅读

  • readfile():读入一个文件并将其内容写入到输出缓冲(会立即输出)
  • fopen():打开一个指定的文件或 URL。 如果 PHP 的allow_url_fopen未被打开,那么打开一个 URL 时fopen()调用失败
  • popen():打开一个指向进程的管道,只允许单向的读或者写