Gå til innhold

Hjelp med script. Skal hente en tilfeldig linje fra en txt-fil


Gjest Slettet-IHWlGMJn

Anbefalte innlegg

Gjest Slettet-IHWlGMJn

Jah.. saken er altså at jeg skal hente en tilfeldig linje(Som kun har tekst) fra en fil(text.txt) og skrive ut denne linjen.

 

Dette skriptet fungerer, men jeg er overhode ikke no god med php så jeg kan ikke tenke meg at dette er i nærheten av en bra måte å gjøre det på.

 

Har ikke klart å finne en enkel måte å lese hvor mange linjer det er i en fil så derfor behandler jeg fila to ganger... teller altså linjene den første gangen og velger en linje og skriver ut neste gang

 

Hadde vært fint om noen kunne gi meg tips til forbedringer(Om det går an å forbedre noe uten å skrive et helt nytt script)

 

Og forresten. Kan noen forklare meg hva som egentlig skjer i "rand() % $count+1". Dette var egentlig noe jeg bare prøvde og fant ut at det fungerte :S

 

 

Takker for svar

 

<?
$filename = "text.txt";
$handle = @fopen($filename, "r");
if ($handle) {
$count = 0;
while (!feof($handle)) {
	$count++;
	$buffer = fgets($handle, 4096);
}
fclose($handle);
}
$handle = @fopen($filename, "r");
if ($handle) {
$ran = rand() % $count+1;
$i = 1;
while (!feof($handle)) {
	$buffer = fgets($handle, 4096);
	if($i==$ran){ 
		echo "$buffer";
	}
	$i++;
}
fclose($handle);
}
?>

Endret av Slettet-IHWlGMJn
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet-IHWlGMJn
For ikke å snakke om at dersom du jobber med virkelig store filer, f.eks. skattelistene, så er du ute på dypt vann med file() ettersom den legger hele filen i minnet.

Er ikke snakk om mange linjene for min del. Rundt 350stk

 

Har du et annet alternativ som fungerer bedre ved større filer da?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...