开发者

PHP explode not filling in array spot 0

I have a file we will call info.txt under UNIX format that has only the following in it:

#Dogs
#Cats
#Birds
#Rabbits

and am running this ag开发者_开发知识库ainst it:

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

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

Now everything looks to be working fine except when I display the array I get the following.

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

I checked the .txt file to make sure there wasn't any space or hidden characters in front of the first # so I'm at a loss of why this is happening other than I feel like I'm missing something terribly simple. Any ideas?

Thanks in advance!


explode() splits on the delimiter. If there is nothing before the first delimiter, then that's what the first element will be. Nothing. An empty string.


I would guess that it's because the very first character is a delimiter, so it's putting whatever's to the left of it in the first element, even if it's an empty string. So you would have to start the file with "Dogs", not "#Dogs"


You're running it like

#Dogs#Cats#Birds#Rabbits

PHP splits it by cutting, thus where you have Dogs it sees it like 'Blank Space' | Dogs.

You can easily fill [0] by using array_shift($input, 1);


You could explode by newlines and not use the # at all although then you would have a trailing empty item. I guess you still have to do some integrity check (remove the first/last item if empty) after parsing.


another way

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜