【问题标题】:Is this expected behavior from the file() function?这是 file() 函数的预期行为吗?
【发布时间】:2016-03-20 10:21:02
【问题描述】:

在 php 7.0.3 环境中,我有一个仅包含一个换行符(“\n”)的文件,我执行以下操作:

var_dump(file("test.txt", FILE_IGNORE_NEW_LINES));

输出是:

array(1) {
  [0]=>
  string(0) ""
}

这是错误的,因为文件实际上由两个空行组成。

如果最后一行为空,文件函数是否期望它忽略最后一行? 任何可靠的解决方法,其行为类似于 file 函数,但如果为空则不会忽略最后一行?

【问题讨论】:

  • 文件由一个空行和一个换行符组成。所以一切都很好。
  • 是的,这是预期的行为。
  • @u_mulder 所以如果一个文件是空的,它会返回一个空行,如果有一个换行符......还有一个空行吗?我不明白这是怎么回事,应该返回两个空行。
  • @user2464424 如果文件为空,则返回 0 个空行。
  • @fusion3k 好的,所以它为空文件返回一个空数组。但是,一个换行符记事本++仍然有效地告诉我有两行。我仍然无法理解 php 如何未能如我所愿地返回两个。

标签: php file newline


【解决方案1】:

我觉得Wikipedia总结的不错:

查看换行符的两种方式都是自洽的,分别是 换行符分隔行或它们终止行。如果换行符是 被认为是分隔符,最后一行之后不会有换行符 一个文件。

您可能想改用FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES;它returns the empty array you expect

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 2021-05-05
    • 2010-12-01
    • 2017-03-12
    相关资源
    最近更新 更多