webForumDet fria alternativet

Random rad i en fil?

PHPur PHP

7 svar · 696 visningar · startad av WilleB

WilleBMedlem sedan okt. 200934 inlägg
#1

Hej!

Jag har en txt-fil på servern med en massa (massa) rader.
Jag vill göra ett php-script som öppnar filen, tar ut en random rad och lägger i en variabel.

Tänker på om jag ska anväbda ftp med fopen() på något sätt...

Är 14 år och har inte hållt på med php så länge, ha gärna mycket kommentarer i koden så det blir lättare för mig att förstå vad som händer :)

fiddlerMedlem sedan juli 20023 617 inlägg
#2

Otestad, men borde fungera

$textfil=file('filen.txt');//Läser in filen i en array
shuffle($textfil);//Blandar om
$dinvariabel=$textfil['0'];//Lägger element 0 i $dinvariabel
SPiNMedlem sedan mars 20007 896 inlägg
#3

Det lättaste sättet är att använda file(), som läser in en fil till en array. Varje post i arrayen motsvarar en rad i filen. Sen slumpar man ett värde mellan 0 och sizeof($array) - 1 för att få ett slumpmässigt index, och returnerar sedan raden.

function getRandomLineFromFile($filename) {
    /* Läs in filen till en array */
    $array = file($filename);
    /* Slumpa ett index från 0 till arrayens högsta index */
    $index = rand(0, sizeof($array) - 1);

    /* Returnera raden */
    return $array[$index];
}

Det finns ingen anledning till att blanda in FTP, ange istället hela sökvägen till filen när du anropar funktionen:

/* Så här enkelt är det nu att få en slumpmässig rad från filen '../my/files/file.txt': */
$line = getRandomLineFromFile('../my/files/file.txt');
WilleBMedlem sedan okt. 200934 inlägg
#4

Behöver mera hjälp, inget fungerar!

nitro2k01Medlem sedan aug. 20039 342 inlägg
#5

Wille, kan du visa hur den kod du har prövat ser ut? Var ligger text-filen i relation till php-filen? Bara för att kolla att du har de absoluta grundkunskaperna: Du vet att filer som innehåller PHP-kod måste ha filändelsen php och att koden måste inneslutas mellan <?PHP och ?> va?

WilleBMedlem sedan okt. 200934 inlägg
#6

Av nån anledning postade min dator två posts - den under är den som gäller

WilleBMedlem sedan okt. 200934 inlägg
#7

Min kod:

<?php
function getRandomLineFromFile($filename) {
    /* Läs in filen till en array */
    $array = file($filename);
    /* Slumpa ett index från 0 till arrayens högsta index */
    $index = rand(0, sizeof($array) - 1);

    /* Returnera raden */
    return $array[$index];
} 

/* Så här enkelt är det nu att få en slumpmässig rad från filen '../my/files/file.txt': */
$line = getRandomLineFromFile('http://.../fil.txt'); 

echo "Random ord: $line"; 
?>

Jag har en riktig sökväg i den riktiga filen, inte http://.../fil.txt
fil.txt ligger i samma mapp som phpfilen

@nitro2k01 Jag kan grunderna i php och previewar fien i localhost (xampp)

nitro2k01Medlem sedan aug. 20039 342 inlägg
#8

Jaha... Vad du bör göra är att lägga filen i samma katalog på web-servern, som php-filen ligger i, och bara skriva getRandomLineFromFile('fil.txt');

125 ms totalt · 3 externa anrop · v20260731065814-full.363dfaf6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)