hente noget fra en txt fil, og sortere det

Tags:    php

Jeg skal bruge lidt hjælp, om end ide'er...

jeg har fået en txt fil som indeholder data til et kort, kortet er simpelt lavet, og hver af disse "felter" som kortet består af, er reprsenteret med et bogstav, det jeg så skal vide er hvordan, det er jo nemt nok at filtrere det efter man har fanget det, men det er mere hvordan skal teksten sammensættes for det bedste resultat ? og hvordan får jeg det ud af filen, så jeg kan bruge det ?

selve filen består af en linie som rummer 100 x 100 felter på kortet, hvert felt er repræsenteret med 2 tal, disse 2 tal er placeret tabel agtigt

Mvh Ralph B. Andreasen



10 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Gør evt. som Mikkel foreslog....
<?
//Henter indholdet af filen ind i $indhold
$fil = "kort.txt";
$fd = fopen($fil, "r");
$indhold = fread ($fd, filesize($fil));
fclose($fd);
?>


Så har du indholdet af filen liggende i en tekststreng $indhold.

//Map 100 X 100
$map_size = 100;

//Parse tekststreng og opret et 2D array
for ($i = 0; $i < $map_size; $i++){

for($j = 0; $j < $map_size && (($i+1)*($j+1)) <= strlen($indhold); $j++){

$map[$i][$j] = $indhold{($i*$map_size) + $j};

}

}

Nu har du dine characters liggende i et 100x100 array $map[0..99][0..99].

Forudsætter selvfølgelig at filen,
1) indeholder kun 1 linje
2) indeholder kun bogstaver
3) har en struktur som denne "aaaaabbbbbcccccdddddeeeee", hvor de 5 a'er repræsenterer række 1 søjle 1-5, b'erne række 2 søjle 1-5, osv.




<?
//Henter indholdet af filen ind i $indhold
$fil = "kort.txt";
$fd = fopen($fil, "r");
$indhold = fread ($fd, filesize($fil));
fclose($fd);

//arrayet $arr oprettes
$arr;

//nummeret på tegnet, hvor det starter
$number = 0;

//hvor mange tegn, der skal tages med
$antalchars = 2;

for ($i = 0; $i <= strlen($indhold) / 2; $i++)
{
$arr[$i] = substr($indhold, $number, $antalchars);
$number = $number + $antalchars;
}

//Nu er kortets felter inde i et array....

//Nu skriver vi dem ud:
for ($i = 0; $i <= count($arr) - 1; $i++)
{
echo $i . ". felt: " . $arr[$i] "";
}
?>


DET ER IKKE TESTET!!!


/*
Mikl
mikl@mikl.dk
www.mikl.dk

"Livet er for kort til ASP"

ICQ:
Stationære: 133439986
Bærbare: 159096501
*/[Redigeret d. 06/11-02 22:29:40 af Mikkel Andersen]



Et eksempel på strukturen af filen ville hjælpe...



Sådan jeg forestillede mig den er:
AAABACADAEAFAGAHAIAJAKALAMAN osv...

/*
Mikl
mikl@mikl.dk
www.mikl.dk

"Livet er for kort til ASP"

ICQ:
Stationære: 133439986
Bærbare: 159096501
*/



her kommer lige et stykke af filen, den er så blevet ændret sidenførste modtagelse.

1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1wwwwwwppppppppphhhmmhhmhpppppssssssssssssssmmmssssssssmmssssssssssssssmmhhpphppppppppppppppppppppppp
2wwwwwwpphppphppphhmmmmmmmppppsssssssssssssmsssmmsssssmsssssssssssmssmmmmmhpppppppppphhpppppppphppppp
3wwwwppphhpppppphhmmmmmmmppppppsssssssssssssssssssssssssssssssssssssmmmmmmmhhhpppppphppppppppphhhhppp
4wwwwwppppppppphhmmhmmmmppphppppppsssssssssmmsssmssssssssssssssssssmmmmmmmmppmmpppppmmmpppmpphppphppp
5wwwwphppppppppphmmmhmmmmmpppppppsssssssssssssssssssssssmssssssssssmmmmmmmmmmmmpmmmpmmmmpmmmmpppmpppp
6wwppppppppppphmmmmhpmmmppfpppppppsssssssssssssssssssssmssssssssssmmmmmmmmmmmmmmmmmmmmmmhmmmhhhpppppp
7wwwppppppppphmmmmmmmmmmmpppffppppppssssssssssssssmsssssssssssssssmmmmmmmmmsssmmmmmmmmmhmhmmmmhhhpppp
8wwwppppppphhmmmppmmmmmmmmppfpppppppssssssssssssssssssssssssssssssmmmmmssmmmmmmmmssmmmmmmmmhhhppppppp
9wppphppphphmmmpphmmmmpppppppppppppppssssssssssssssssssssssssssssmmmmmmmmmmmmmmmmmmmmmmmmmmhhpppppppp
0phhhpphhhpmmmmmmmmmmpppppppfppppppppsssssssssssssssssssssssssssmmmmmmmmmmmhhmmmmhhhhhhhhhppppppppppp

her er så 10 x 100 felter...

Mvh Ralph B. Andreasen[Redigeret d. 08/11-02 07:43:05 af Ralph B. Andreasen]



Så skal jeg sådan set bare bruge variablen $map[1][50] hvis jeg skal bruge feltet i række 1 og på kolone 50 ???

jeg er stadig lidt forvirret med de dersens variabler og hvordan man kan bruge dem...

Jeg bveklager at jeg ikke har svaret før nu, men jeg er blevet ophængt lidt meget på det seneste.

Mvh Ralph B. Andreasen



Så skal jeg sådan set bare bruge variablen $map[1][50] hvis jeg skal bruge feltet i række 1 og på kolone 50 ???


...næsten rigtigt, arrayet er indexeret fra 0 og ikke 1. Dvs skal du bruge feltet i række 1 og på kolonne 50 ligger det i $map[0][49] altså $map[1-1][50-1].



Ok nu giver det lidt mere mening.... er der ikke en forklaring på array's ???

altså en der giver mening...

Mvh Ralph B. Andreasen[Redigeret d. 14/11-02 05:13:47 af Ralph B. Andreasen]



Arrayet er konstrueret således, at

$map[x-1][y-1]

Giver dig indholdet af feltet i række x og søjle y, idet arrayet starter med index 0 og ikke 1.

Gav det mere mening?[Redigeret d. 14/11-02 22:49:53 af Erik K. Aarslew-Jensen]



Jeps jeg fandt ud af det til sidst... puha...

Der er UP til Erik...

Jeg fik et fint resultat ud af det :)

Man kan se resultatet her http://orpgcg.users.whitehat.dk/map.php

Mvh Ralph B. Andreasen



t