|
| Hvilken værdi har tom linie? Fra : Christer Rasmussen |
Dato : 08-09-02 14:58 |
|
Jeg har en .txt fil med følgende indhold. (complete.txt)
*** Fil start ***
Track: Monza Thu Sep 05 21:51:34 2002
PRACTICE TIMES
Pos No Driver Team Nat Time
1 3 Torben Ferrari USA 1m28.181s
2 15 Flemming Lotus DEN 1m28.475s
3 17 Henning Eagle DEN 1m28.786s
All times are official
RACE RESULT
Pos No Driver Team Nat Time Laps
1 3 Torben Ferrari USA 33m24.181s 17
2 15 Flemming Lotus DEN 33m25.475s 17
3 17 Henning Eagle DEN 34m18.746s 17
All times are official
*** Fil slut ***
Jeg skal have nogle af informationerne fra de 3 (Kan være flere alt efter
antal deltagere) linier med resultatet af løbet lagt ind i en database.
og indtil vidre har jeg følgende kode.
<?
$fd = fopen ("complete.txt", "r");
while (!feof ($fd)) {
$buffer = fgets($fd, 4096); //Henter en linie
$pos = strpos($buffer, "Pos"); //Ser om linien indeholder "Pos"
if ($pos === false) { //Hvis "Pos" ikke findes skal der
ikke ske noget (while lykken læser næste linie)
} else { //Hvis linie indeholder
"Pos" skal der ske noget
$driverpos = strpos($buffer, "Driver"); //hvor starter Driver
Navn
$teampos = strpos($buffer, "Team"); //hvor starter Team Navn
$natpos = strpos($buffer, "Nat"); //hvor starter Nat
while ($buffer = fgets($fd, 4096) NOT EQUAL "tom") { //Det er
så her jeg har problemet. LÆS under koden.
$name = trim(substr($buffer, $driverpos,
($teampos-$driverpos))); //klip Navnet ud af linien som herefter kan
puttes i database.
}
}
}
fclose ($fd);
?>
LÆS her. lykken skal gentages indtil der kommer en tom linie (Linien under
Henning). hvorefter den første while køre videre til den kommer til "Pos"
efter RACE RESULT og denne while køre igen.
Hvad er indholdet af $buffer når linien er tom?
Mvh
Christer
| |
Niels Andersen (08-09-2002)
| Kommentar Fra : Niels Andersen |
Dato : 08-09-02 16:08 |
|
Christer Rasmussen wrote in <alfl2f$2m0r$1@news.cybercity.dk>:
> $buffer = fgets($fd, 4096); //Henter en linie
[...]
> Hvad er indholdet af $buffer når linien er tom?
Et linjeskift. Dvs. "\n" eller "\r\n", alt efter om det er Unix eller
Windows linjeskift.
Du kan evt. køre trim() på den. Den fjerne alt "white-space" (linjeskift,
mellemrum, tabulator...) først og sidst på linjen.
Dvs.:
' test
'
(altså med linjeskift til sidst) bliver til:
'test'
og en tom linje (altså kun et linje skift) bliver til '', altså en helt tom
streng.
--
Mvh.
Niels Andersen
(la nels. anersyn.)
| |
Christer Rasmussen (08-09-2002)
| Kommentar Fra : Christer Rasmussen |
Dato : 08-09-02 18:13 |
|
Tak for det, det virkede.
"Niels Andersen"
> Christer Rasmussen wrote in <alfl2f$2m0r$1@news.cybercity.dk>:
> > $buffer = fgets($fd, 4096); //Henter en linie
> [...]
> > Hvad er indholdet af $buffer når linien er tom?
>
> Et linjeskift. Dvs. "\n" eller "\r\n", alt efter om det er Unix eller
> Windows linjeskift.
>
> Du kan evt. køre trim() på den. Den fjerne alt "white-space" (linjeskift,
> mellemrum, tabulator...) først og sidst på linjen.
>
> Dvs.:
>
> ' test
> '
>
> (altså med linjeskift til sidst) bliver til:
>
> 'test'
>
> og en tom linje (altså kun et linje skift) bliver til '', altså en helt
tom
> streng.
>
> --
> Mvh.
>
> Niels Andersen
> (la nels. anersyn.)
| |
|
|