|
Posted by programming on 04/11/07 21:36
On Apr 11, 10:56 pm, Kim André Akerø <kiman...@NOSPAMbetadome.com>
wrote:
> programming wrote:
> > On Apr 11, 7:08 pm, Toby A Inkster <usenet200...@tobyinkster.co.uk>
> > wrote:
> > > programming wrote:
> > > > say i would like to delete the middle line of this txt, in
> > > > member.txt what php code or logic would help me accomplish this?
>
> > > For a small file:
>
> > > 1. Read member.txt into an array (the "file" function is
> > > your friend);
> > > 2. Make the changes to the array (the "unset" function is
> > > your friend);
> > > 3. Output the array to "member-new.txt";
> > > 4. Delete "member.txt";
> > > 5. Rename "member-new.txt" to "member.txt";
>
> > > If the file is larger (more than say, 500 kB) this might become a
> > > bit memory-hungry, and it's worth looking at iterating over each
> > > line of the file individually rather than reading it all into
> > > memory at once.
>
> > Thanks for you steps, i had a go at doing it..is this what you meant
> > by any chance?
>
> > <?php
>
> > $line = file ("./member.txt", "w");
> > unset($line);
>
> > $line = fopen("./member-new.txt");
>
> > unlink("./member.txt")
>
> > rename("member-new.txt","member.txt");
>
> > fclose($line);
>
> > ?>
>
> > I am getting a parse error, and i am not sure if i am doing this
> > right??
>
> > Parse error: syntax error, unexpected T_STRING in /volumes/data1/home/
> > pioannou/public_html/php/Assignment11/admin/delete_member.php on line
> > 11
>
> The parse error itself comes from the missing semicolon on the line
> with the unlink() function.
>
> Second, you have placed the "w" parameter on the wrong function (on the
> file() function instead of the fopen() function).
>
> Thirdly, you're attempting to move/rename the new file BEFORE closing
> the file handle for it. This could cause problems in terms of
> locking/permissions.
>
> Fourthly, you still haven't output the updated array to the new file
> yet. Also, you're unsetting (deleting) the entire array instead of just
> a single item.
>
> After fixing the errors, the final source code snippet should look
> something like this (with comments attached):
>
> <?php
>
> // Which line number (counting from 0) should we delete?
> $line_to_delete = 4;
>
> // Load the lines into an array; newlines are still attached
> $lines = file ("./member.txt");
>
> // Delete the line number from the array
> unset($lines[$line_to_delete]);
>
> // Open the new file for writing
> $lines_update = fopen("./member-new.txt", "w");
>
> // 1. Join the array to a single string (newlines are already attached)
> // 2. Write the updated array to the new file
> fwrite($lines_update, join("", $lines);
>
> // Close the file handle to allow other operations on the file
> fclose($lines_update);
>
> // Remove the old file
> unlink("./member.txt");
>
> // Rename the new file to use the old filename, replacing the old file
> rename("member-new.txt","member.txt");
>
> ?>
>
> --
> Kim André Akerø
> - kiman...@NOSPAMbetadome.com
> (remove NOSPAM to contact me directly)
this sounds good, but the only think i am confused about know is the
line_to_delete = 4;
is there any chance of matching the entry line from my web page to the
line
in the text file by using a superglobal to catch the value that needs
to be matched to the line in the file...
[Back to original message]
|