file()

1. 定义

将文件读入数组。返回以文件行号为索引的数组。

2. 语法

file ( string $filepath [, int $flags = 0 [, resource $context ]] ) : array

3. 参数说明

参数 可选性 数据类型 描述
$filepath 必需 字符串 文件所在路径
$flags 可选 整型 可选操作
$context 可选 资源类型 资源流上下文

其中,$flags的值可能为以下常量中的一个或几个:

  • FILE_USE_INCLUDE_PATH:在include_path中查找
  • FILE_IGNORE_NEW_LINES:数组的每个元素末尾不添加换行符
  • FILE_SKIP_EMPTY_LINES:跳过空行

如果不使用FILE_IGNORE_NEW_LINES,每行都将添加一个换行符,除非使用rtrim()函数。

4. 示例

<?php

// file()
// 将文件读入数组。返回以文件行号为索引的数组

ini_set("auto_detect_line_endings", true);

file_put_contents(__DIR__.'/test.txt', "
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Summus dolor plures dies manere non potest? Expectoque quid ad id, quod quaerebam, respondeas. Sed residamus, inquit, si placet. Tu quidem reddes; Duo Reges: constructio interrete. Quae similitudo in genere etiam humano apparet. </p>

");

$arr = file(__DIR__.'/test.txt');
var_dump($arr);
/* 输出:
array(3) {
  [0]=>
  string(1) "
"
  [1]=>
  string(294) "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Summus dolor plures dies manere non potest? Expectoque quid ad id, quod quaerebam, respondeas. Sed residamus, inquit, si placet. Tu quidem reddes; Duo Reges: constructio interrete. Quae similitudo in genere etiam humano apparet. </p>
"
  [2]=>
  string(1) "
"
}
*/

$arr = file(__DIR__.'/test.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
var_dump($arr);
/* 输出:
array(1) {
  [0]=>
  string(293) "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Summus dolor plures dies manere non potest? Expectoque quid ad id, quod quaerebam, respondeas. Sed residamus, inquit, si placet. Tu quidem reddes; Duo Reges: constructio interrete. Quae similitudo in genere etiam humano apparet. </p>"
}
*/

5. 延展阅读

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