0

我有一个文件,我们将在 UNIX 格式下调用info.txt,其中只有以下内容:

#Dogs
#Cats
#Birds
#Rabbits

并针对它运行:

$filename = "info.txt";
$fd = fopen ($filename, "r");
$contents = fread ($fd,filesize ($filename));

fclose ($fd);
$delimiter = "#";
$insideContent = explode($delimiter, $contents);

现在一切看起来都很好,除了当我显示数组时,我得到以下信息。

[0] => 
[1] => Dogs
[2] => Cats
[3] => Birds
[4] => Rabbits

我检查了 .txt 文件以确保第一个 # 前面没有任何空格或隐藏字符,所以我不知道为什么会发生这种情况,除了我觉得我错过了一些非常简单的东西。有任何想法吗?

提前致谢!

4

5 回答 5

6

explode()在分隔符上拆分。如果第一个分隔符之前没有任何内容,那么这就是第一个元素。没有什么。一个空字符串。

于 2010-03-17T00:06:49.657 回答
2

我猜这是因为第一个字符是一个分隔符,所以它把它左边的任何东西放在第一个元素中,即使它是一个空字符串。所以你必须用“Dogs”开始文件,而不是“#Dogs”

于 2010-03-17T00:08:06.313 回答
0

你运行它就像

#狗#猫#鸟#兔子

PHP 通过切割将其拆分,因此在您有 Dogs 的地方它会看到它就像“空白空间” | 小狗。

您可以使用array_shift($input, 1);轻松填充 [0]

于 2010-03-17T00:08:29.623 回答
0

你可以用换行符爆炸而不使用#,尽管那样你会有一个尾随的空项目。我猜您在解析后仍然需要进行一些完整性检查(如果为空,则删除第一项/最后一项)。

于 2010-03-17T00:11:38.123 回答
0

另一种方式

$f=file("file");
print_r( preg_replace("/^#/","",$f) ) ;
于 2010-03-17T00:47:42.707 回答