PHP爆炸未填充数组点0

时间:2010-03-17 00:03:25

标签: php explode

我有一个文件,我们将在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文件以确保第一个#前面没有任何空格或隐藏字符,所以我不知道为什么会发生这种情况,除了我觉得我错过了一些非常糟糕的东西简单。有什么想法吗?

提前致谢!

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

我猜这是因为第一个字符是分隔符,所以它在第一个元素中放置它的左边的任何内容,即使它是一个空字符串。因此,您必须使用“Dogs”启动文件,而不是“#Dogs”

答案 2 :(得分:0)

你正在运行它

  

#狗#猫#鸟#兔

PHP通过剪切将其拆分,因此在你拥有Dogs的地方它会看到它像'Blank Space'|犬。

您可以使用array_shift($input, 1);

轻松填写[0]

答案 3 :(得分:0)

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

答案 4 :(得分:0)

另一种方式

$f=file("file");
print_r( preg_replace("/^#/","",$f) ) ;