/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Fgets kan ikke håndtere linjeskift(?)
Fra : Jens Gregersen [9670~


Dato : 30-12-02 23:54

Jeg har lavet et filbaseret gæstebogs-/nyhedssystem der fungerer nogenlunde
sådan her:

1) Vi har en fil med noget indhold.
2) Indholdet hentes til en variabel med fgets
3) Det nye indhold overskriver det, der står i forvejen
4) Det gamle appendes

Derved vil det nyeste altid stå øverst, og det fungerer sådan set fint nok,
MEN:

Hvis man bruger linjeskift i filen, som fgets skal hente indholdet af, tager
den kun alt det, der står før det første linjeskift. Dette kan selvfølgelig
klares ved at bruge noget replace til at erstatte alle \n til "", men hvis
man bagefter skal rette i det, er det derfor _meget_ uoverskueligt.

Findes der andre funktioner, der kan gøre arbejdet for mig - bare giv mig et
link til TFM, så skal jeg nok selv R





 
 
Niels Andersen (31-12-2002)
Kommentar
Fra : Niels Andersen


Dato : 31-12-02 00:01

Jens Gregersen [9670] wrote in
<3e10ce6f$0$1780$ba624c82@nntp03.dk.telia.net>:
> Hvis man bruger linjeskift i filen, som fgets skal hente indholdet af,
> tager den kun alt det, der står før det første linjeskift.

Samt det første linjeskift. Det er det, fgets() er beregnet til. :)
"fgets -- Gets line from file pointer"

Læs mere her:
http://www.php.net/manual/en/function.fgets.php
Hvor der også er et eksempel på at læse en hel tekst-fil.

Du kan også overveje at bruge "fread()". Den er beregnet til binære filer,
og er dermed æske-ligeglad med linjeskift. :)

Du kan også bruge join/file-tricket:
$indhold = join('', file('fil.txt'));

Eller med PHP 4.3 bliver det rigtigt nemt:
$indhold = file_get_contents('fil.txt');

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Jens Gregersen [9670~ (31-12-2002)
Kommentar
Fra : Jens Gregersen [9670~


Dato : 31-12-02 00:44

> > Hvis man bruger linjeskift i filen, som fgets skal hente indholdet af,
> > tager den kun alt det, der står før det første linjeskift.
>
> Samt det første linjeskift. Det er det, fgets() er beregnet til. :)
> "fgets -- Gets line from file pointer"

Hehe... okay

Det er bare mig, der ikke er så god til at tyde, hvad det er de skriver i
manualen - men igen er det skoven man ikke kan se...

> Læs mere her:
> http://www.php.net/manual/en/function.fgets.php
> Hvor der også er et eksempel på at læse en hel tekst-fil.

Tak - har ikke prøvet, men den havde jeg heller ikke opdaget før

> Du kan også overveje at bruge "fread()". Den er beregnet til binære filer,
> og er dermed æske-ligeglad med linjeskift. :)

Jada! Men fread kører det helt perfekt! Mange tak!

> Du kan også bruge join/file-tricket:
> $indhold = join('', file('fil.txt'));
>
> Eller med PHP 4.3 bliver det rigtigt nemt:
> $indhold = file_get_contents('fil.txt');

Lyder spændende, men fread dækker mine behov (indtil videre :))

Igen bukker, nejer og takker jeg...



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste