1

我正在创建一个函数,它可以接受一个字符串,该字符串要么通过file_get_contents()本地文本文件检索,要么从http://site.com/338383.txt.

该文件将是一个制表符分隔的文件,文件中的每个项目都在其自己的行上。使用\n\r使用explode()字符串并获取每行的数组更好吗?

我注意到在某些情况下\n不起作用。我想要一种始终有效的一致方式。有什么想法吗?

4

4 回答 4

5

您可以使用file()将文件的内容作为具有单独行的数组获取。

于 2009-05-15T09:49:07.133 回答
2

正如duckyflip指出的那样,您可以使用file()函数来获取文件行数组。但是,如果您仍然需要爆炸(出于未知原因),您应该使用 PHP 常量PHP_EOL而不是 '\n',因为这是跨平台兼容的。

于 2009-05-15T09:57:39.237 回答
1

问题是对于不同的“文本/纯文本”编码和平台,换行符的定义不同。快速而肮脏的解决方案可能是使用 split 和正则表达式“\r\n|\r|\n”,但是,它可能会在某些 unicode 文件上中断并且它没有“上下文”意义。即,如果您有一个文件,其中 LF (\n) 用作 EOL 标记,并且那里有一些应该保留的 CR,那么这些 CR 也将被拆分。

于 2009-05-15T10:03:02.700 回答
0

您可以使用preg_split ()按 /\n\r|\n|\r/ 分解,然后trim ()每个项目以确保没有剩余的尾随空格(如果合适的话)。

于 2009-05-15T09:54:53.283 回答