|  | 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] |