FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » SplFileObject always returns an extra "last" line -- why?
Show: Today's Messages :: Unread Messages :: Polls :: Message Navigator
| Subscribe to topic | Bookmark topic 
Switch to threaded view of this topic Create a new topic Submit Reply
SplFileObject always returns an extra "last" line -- why? [message #186318] Tue, 24 June 2014 10:09 Go to next message
kurtk(at)pobox(dot)com is currently offline  kurtk(at)pobox(dot)com
Messages: 10
Registered: May 2012
Karma: 0
Junior Member
add to buddy list
ignore all messages by this user
Why does SplFileObject always seems to return an extraneous, final empty string as an extra last line of file.

If I have a file with only one line of text and run this code

try {
$file = new SplFileObject("./one.txt");

} catch (Exception $e) {
echo $e->getMessage() . "\n";
}

foreach($file as $line_no => $contents) {

echo "line number " . $line_no . " is: " . $contents;

}

I get two lines of output:
line number 0 is: one
line number 1 is:

The file one has one line of text, the word "one". I'm running this on Linux Mint 17 with PHP 5.5.9.

Thanks
Message by Christoph Michael Bec is ignored  [reveal message]  [reveal all messages by Christoph Michael Bec]  [stop ignoring this user] Go to previous messageGo to next message
Re: SplFileObject always returns an extra "last" line -- why? [message #186325 is a reply to message #186319] Tue, 24 June 2014 21:14 Go to previous message
kurtk(at)pobox(dot)com is currently offline  kurtk(at)pobox(dot)com
Messages: 10
Registered: May 2012
Karma: 0
Junior Member
add to buddy list
ignore all messages by this user
> Actually the file has two lines, because you're having a line break (NL,
> CR or CRLF) after the word "one", I assume. Either remove this line
> break, or set appropriate flags for $file:
>
> $file->setFlags(
> SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY
> );

Thanks Christoph! That worked. Now I know how to set the flags to get the behaviour I need.
Quick Reply
Formatting Tools:   
  Switch to threaded view of this topic Create a new topic
Previous Topic: Putting it all together
Next Topic: encoding
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Wed Jan 15 05:01:41 EST 2025

Total time taken to generate the page: 0.04318 seconds