Hello,
I have a function that picks up a random entry from a file consisting
of city names, each name on a separate line. The random value is
generated by rand() before fseek()ing to the position determined by
it. The problem is that when using fgets() to get a random line, it
returns a part of the city name, not the whole name. AFAIK, fgets()
reads a whole line, and even if it's in the middle of a line, it reads
the whole next line.
Some sample of the city names file is as follows:
Amsterdam
Zurich
Alexandria
Dallas
Rome
Berlin
And the scripts outputs them weirdly enough something like:
Amster
andria
Da
me
Berlin
Here's the function:
<?php
function getCity($file)
{
// Try to open the file
if (!file_exists($file) || !($handle = fopen($file, "r")))
{
die('Could not open file for reading.');
}
$size = filesize($file);
$randval = rand(0, $size);
// Seek to a random position in the file
fseek($handle, $randval);
// Get random city name
$line = trim(fgets($fp, 2048));
fclose($fp);
// If line was empty, try again
if(empty($line))
{
$line = getCity($file);
}
return($line);
}
?>
I'm using XAMPP on Windows, PHP 5.2.1.
What am I missing here?
Regards,
Usamah
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php