【问题标题】:PHP isn't detecting new lines from text file properlyPHP 没有正确检测文本文件中的新行
【发布时间】:2017-08-07 15:22:26
【问题描述】:

我有一个包含这些内容的文本文件

00:00:00:23 You
00:00:01:04 would
00:00:01:10 not
00:00:01:20 believe
00:00:02:07 your
00:00:02:16 eyes
00:00:03:08 -
00:00:03:16 if
00:00:03:20 ten
00:00:04:01 million
00:00:04:13 fireflies
00:00:06:00 -
00:00:06:08 lit
00:00:06:17 up
00:00:07:01 the
00:00:07:04 world
00:00:07:13 as

注意每个时间戳之间是如何换行的。如果我执行 file_get_contents 并打印它,它将完全按照需要在浏览器中显示新行。但是,我想将每个新行作为一个单独的数组元素。当我使用file()时,只返回一个包含整个txt文件的元素,即使我写了

ini_set("auto_detect_line_endings", true);

在脚本的开头,大部分行都放在数组中,但有些不是。如果我尝试使用“\n”分隔符进行分解,那根本行不通。

【问题讨论】:

  • 是windows文件吗?尝试在\r\n上炸毁它
  • 不,麦克。试过了还是不行
  • 你知道吗,我只是将文本复制并粘贴到一些在线 html 转换器中并粘贴回来,它工作正常。没有解释为什么会发生这种情况。
  • 您的文本中可能有隐藏字符会破坏内容。尝试类似$text=iconv("UTF-8", "ISO-8859-1//IGNORE", $text); 然后换行
  • 打开一个终端并使用od -c your_file_name.txt 来查看您的文件中是否有任何奇怪的换行符变化——\n 用于 unix,\r 用于“经典”mac 或\r\n窗户。

标签: php file text newline


【解决方案1】:

这应该可行:

$lines = explode("\n", file_get_contents('foo.txt'));

也尝试爆炸:“\025”或“\r”

最新的例子,请试试这个:

也可以试试:

<?php
$lines =file_get_contents('foo.txt');
$lines = preg_split("/\\r\\n|\\r|\\n/", $lines);
print_r($lines);
?>

【讨论】:

  • 不,告诉过你我已经尝试过爆炸,但没有使用 \025,但这仍然不起作用
  • 我上面有一个更新的例子,这个表达式有机会正确检测新行:"/\\r\\n|\\r|\\n/" 你可以再试一次吗?您能否将您的文件更新到某个位置以便我们使用它?
  • 请使用包含 preg_split("/\\r\\n|\\r|\\n/", $lines); 的解决方案这是我为测试它是否有效所做的:我已经在 PSPad 编辑器中保存了带有 Mac 行结束选项的文件,然后我尝试了所有三个选项(\n、\025、\r)它们都不起作用,但是 /\\ r\\n|\\r|\\n/ 给出所需的输出: Array ( [0] => 00:00:00:23 You [1] => 00:00:01:04 will [2] = > 00:00:01:10 不是...
猜你喜欢
  • 2012-08-23
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 2014-01-27
  • 2015-05-24
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
相关资源
最近更新 更多