Recipe 18.9 Reading a Particular Line in a File
18.9.1 Problem
You want to read a specific line in a
file; for example, you want to read the most recent guestbook entry
that's been added on to the end of a guestbook file.
18.9.2 Solution
If the file fits into memory, read the
file into an array and then select the appropriate array element:
$lines = file('vacation-hotspots.txt');
print $lines[2];
18.9.3 Discussion
Because array indexes start at 0, $lines[2] refers
to the third line of the file.
If the file is too big to read into an array,
read it line by line and keep track of which line
you're on:
$line_counter = 0;
$desired_line = 29;
$fh = fopen('vacation-hotspots.txt','r') or die($php_errormsg);
while ((! feof($fh)) && ($line_counter <= $desired_line)) {
if ($s = fgets($fh,1048576)) {
$line_counter++;
}
}
fclose($fh) or die($php_errormsg);
print $s;
Setting $desired_line =
29 prints the 30th line of the file, to be
consistent with the code in the Solution. To print the 29th line of
the file, change the while loop line to:
while ((! feof($fh)) && ($line_counter < $desired_line)) {
18.9.4 See Also
Documentation on fgets( ) at
http://www.php.net/fgets and feof(
) at http://www.php.net/feof.
|