Lucas Batistussi
Lucas Batistussi

Reputation: 2343

Why PHP file handler doesn't work properly?

I have this content on 'test.txt' file: lucas
I want to seek pointer in the file and override info ahead. Supposed I do:

$f = new SplFileObject('test.txt', 'a');

$f->fseek(-5, SEEK_END);

var_dump($f->ftell());

$f->fwrite('one');

This should produce: oneas But the result of execution: lucasone

I'm crazy about the code logic or even doesn't works?

How is the right way to do what I want?

Upvotes: 0

Views: 667

Answers (1)

kuba
kuba

Reputation: 7389

You opened the file for appending:

$f = new SplFileObject('test.txt', 'a');

which means you cannot seek in the file. Instead, open it for reading and writing:

$f = new SplFileObject('test.txt', 'r+');

They also say it in the fseek documentation:

If you have opened the file in append (a or a+) mode, any data you write to the file will always be appended, regardless of the file position, and the result of calling fseek() will be undefined.

Upvotes: 3

Related Questions