datei einlesen, aber nicht mittels file() funktion
Frank
- php
Hallo,
ich bräuchte mal professionelle Hilfe.
Ich muss eine Datei zeilenweise einlesen.
Problem ist, dass die Datei ziemlich gross ist, ca 10 MB. ( Textdatei )
Deshalb fällt die Methode per file() flach.
Irgendwann ist die Datei für den Hauptspeicher zu groß.
Gibt es eine möglichkeit zu sagen,
dass ich diese Datei ggf. bis zum Ende einlese ( aber Zeilenweise )?
Habe mir ungefähr sowas gedacht:
$fp = fopen("datei.txt", "r");
while ( !feof($fp) )
{
#lies nur eine zeile bis zum zeilenende ein
#zeilen sind durch \r\n getrennt, so das sicher gestellt ist,
#das jede Zeile da anfängt, wie es vorgesehen ist.
if ( .. ) # mein abbruch bedinung; die bekomm ich aber hin
}
Mit fgets() funktioniert es nicht so einfach, da ich nicht genau weis, wieviel Bytes eine komplette Zeile hat ( bis die nächste kommt ). Dies wäre auch noch eine Lösung, denn so könnte ich dem Script direkt sagen, dass er sich alle Zeichen bis zum Ende holen soll, und mein Problem wäre gegessen. ;)
Hoffe mir kann da jmd einen Ansatz geben.
Mit freundlichen Grüßen
Frank ;)
hi,
Mit fgets() funktioniert es nicht so einfach, da ich nicht genau weis, wieviel Bytes eine komplette Zeile hat ( bis die nächste kommt ).
kannst du denn nicht den parameter lenght hinreichend groß angeben?
fgets liest dann ja auch immer nur eine zeile - bis zu lenght zeichen werden ja nur dann gelesen, wenn die aktuelle zeile länger als lenght ist.
gruß,
wahsaga
kannst du denn nicht den parameter lenght hinreichend groß angeben?
fgets liest dann ja auch immer nur eine zeile - bis zu lenght zeichen werden ja nur dann gelesen, wenn die aktuelle zeile länger als lenght ist.
hm ok, verstanden , das war mir auch klar.
Nur wieviel bytes ( zeichen ) passen in eine komplette txt-zeile ?
Sonst kann es irgendwann sein, dass length zu kurz angegeben wird mir somit ein paar zeichen fehlen.
Aber wie es den anschein hat, ist es die einzige Möglichkeit, die Datei einzulesen.
mfg
Frank
echo $begrüßung;
Nur wieviel bytes ( zeichen ) passen in eine komplette txt-zeile ?
viele...
Sonst kann es irgendwann sein, dass length zu kurz angegeben wird mir somit ein paar zeichen fehlen.
Das wäre möglich. Da musst du was schätzen. Eine Zeile auf einem Blatt Papier hat vielleicht 70 bis 80 Zeichen, eine ganze Seite ungefähr 2000.
echo "$verabschiedung $name";
Ahoi Frank,
Sonst kann es irgendwann sein, dass length zu kurz angegeben wird mir somit ein paar zeichen fehlen.
wie du hier
http://de2.php.net/manual/de/function.fgets.php
nachlesen kannst brauchst du seit PHP 4.3 keine length angabe machen
denn es wird dann automatisch bis zum zeilenende gelesen, welche PHP
version hast du?
MfG
\ / \ /´¯.l.¯
\ /