zeilen auslesen!!! aber...
Thomas
- php
0 Ludwig Ruderstaller0 Ralf Rapude0 Thomas0 Ralf Rapude0 Thomas0 Ralf Rapude0 Thomas
0 Henryk Plötz
Hi,
also ich würde gern wissen wie die funktion lautet um EINZELNE zeilen aus einer .txt datei auszulesen.
Jetzt fragt ihr euch bestimmt ahh die frage kam doch schon 1000 mal, ja stimmt aber die fragen wurden immer mit der funktion explode() oder sonstigem beantwortet. Eine doku naja gesucht hab ich nach vielem gelesen hab ich auch vieles aber nach was soll ich suchen wenn ich nicht weiss wie die funktion heisst?
Ich will nur wissen ob es eine funktion gibt die einzelne zeilen ausliest die in einen string packt und ich dann den string nach trennzeichen "exploden" kann? wenn ja welche?
gruss thomas
$meinarray=file("meinfile.txt");
$meinarray[0] = erste zeile
$meinarray[1] = zweite zeile
....
$meinarray[1010101] = 1010101 seite :)
$meinexplodiertesarray=explode($meinarray[1010]);
Ludwig
Hallo Thomas,
das explode() von Ludwing benoetigt noch ein Trennzeichen. Als Trennzeichen kannst du einsetzen was du willst, denn die Funktion explode sucht nach jedem beliebigen Zeichen.
Also:
$ausgabe=explode(";",$dein_array[1000]);
Statt ; könnte da eben auch , oder nur " " stehen, wenn es ein Leerzeichen ist, dass den Inhalt deiner Zeile trennt. $ausgabe ist dann wieder ein Array, dass die Inhalte von $dein_array in Einzelteilen enthält, die du wieder über $ausgabe[0]usw. ansprechen kannst.
Eine prima doku findest du uebrigens noch hier:
http://www.php.net/docs.php
Da gibt es auch ein aktuelles .chm mit Suche und allem Schnickschnack.
Gruesse
Ralf
also ich würde gern wissen wie die funktion lautet um EINZELNE zeilen aus einer .txt datei auszulesen.
Jetzt fragt ihr euch bestimmt ahh die frage kam doch schon 1000 mal, ja stimmt aber die fragen wurden immer mit der funktion explode() oder sonstigem beantwortet. Eine doku naja gesucht hab ich nach vielem gelesen hab ich auch vieles aber nach was soll ich suchen wenn ich nicht weiss wie die funktion heisst?
Ich will nur wissen ob es eine funktion gibt die einzelne zeilen ausliest die in einen string packt und ich dann den string nach trennzeichen "exploden" kann? wenn ja welche?
gruss thomas
Hallo Thomas,
hi
das explode() von Ludwing benoetigt noch ein Trennzeichen. Als Trennzeichen kannst du einsetzen was du willst, denn die Funktion explode sucht nach jedem beliebigen Zeichen.
Also:
$ausgabe=explode(";",$dein_array[1000]);
Statt ; könnte da eben auch , oder nur " " stehen, wenn es ein Leerzeichen ist, dass den Inhalt deiner Zeile trennt. $ausgabe ist dann wieder ein Array, dass die Inhalte von $dein_array in Einzelteilen enthält, die du wieder über $ausgabe[0]usw. ansprechen kannst.
ja aber gibt es keine funktion die wirklich nur zeilen liest also ohne trennzeichen?
warum klappt dann folgendes nicht?
$zeilenweise = explode("\n", $inhalt);
$split = explode(";", $zeilenweise);
auch wenn man für \n irgendwas anderes einsetzt klappt es nicht!
oder ich wenn ich echo $split[1] schreib wird nichts ausgegeben weisst du da weiter?
gruss thomas
Hi,
ja aber gibt es keine funktion die wirklich nur zeilen liest also ohne trennzeichen?
Doch. Das macht eben file. Ludwig hatte das ja schon beschrieben.
$zeilenweise = file("deinfile.txt");
Dann hat $zeilenweise[0] die erste Zeile deiner File als Inhalt,
$zeilenweise[1] die zweite usw.
Aber ich hatte dich so verstanden, dass du diese Zeilen auch nochmal an Hand eines Trennzeichens aufsplitten willst.
$zeilenweise = explode("\n", $inhalt);
Das kann so nicht funktionieren. Angenommen $inhalt kommt so zu Stande:
$inhalt = file("deintext.txt");
Dann koenntest du hoechstens dieses machen:
$zeilenweise = explode("\n",$inhalt[0]);
Aber das haette ja keinen Sinn, weil das \n ja ohnehin am Ende steht. Das heisst, du hast den Inhalt ja schon komplett in $inhalt[0]. Warum solltest du den nochmal aufteilen am Zeilenumbruch?
Wenn du wirklich nur die Zeilen haben willst, dann ist file(); dein Freund :o). Guck mal in die Doku und kopiere die Beispiele zum testen. Dann muesste das eigentlich klarer werden.
$split = explode(";", $zeilenweise);
Das koennte was ausgeben, wenn du dieses schreibst:
$split = explode(";",$zeilenweise[0]);
oder statt [0] eben [1] usw., denn $zeilenweise hast du ja schon ueber explode()zu einem Array gemacht. Das heisst, du suchst in der Variablen $zeilenweise nach dem Trennzeichen ";" und das kann es da gar nicht geben, weil es keine Variable $zeilenweise gibt, sondern es gibt ein Array $zeilenweise.
HTH
Ralf
Hi,
ja aber gibt es keine funktion die wirklich nur zeilen liest also ohne trennzeichen?
Doch. Das macht eben file. Ludwig hatte das ja schon beschrieben.
$zeilenweise = file("deinfile.txt");
Dann hat $zeilenweise[0] die erste Zeile deiner File als Inhalt,
$zeilenweise[1] die zweite usw.
Aber ich hatte dich so verstanden, dass du diese Zeilen auch nochmal an Hand eines Trennzeichens aufsplitten willst.
$zeilenweise = explode("\n", $inhalt);
Das kann so nicht funktionieren. Angenommen $inhalt kommt so zu Stande:
$inhalt = file("deintext.txt");
ja so ähnlich mit fgets!
Dann koenntest du hoechstens dieses machen:
$zeilenweise = explode("\n",$inhalt[0]);
Aber das haette ja keinen Sinn, weil das \n ja ohnehin am Ende steht. Das heisst, du hast den Inhalt ja schon komplett in $inhalt[0]. Warum solltest du den nochmal aufteilen am Zeilenumbruch?
Wenn du wirklich nur die Zeilen haben willst, dann ist file(); dein Freund :o). Guck mal in die Doku und kopiere die Beispiele zum testen. Dann muesste das eigentlich klarer werden.
ja stimmt!
$split = explode(";", $zeilenweise);
Das koennte was ausgeben, wenn du dieses schreibst:
$split = explode(";",$zeilenweise[0]);
oder statt [0] eben [1] usw., denn $zeilenweise hast du ja schon ueber explode()zu einem Array gemacht. Das heisst, du suchst in der Variablen $zeilenweise nach dem Trennzeichen ";" und das kann es da gar nicht geben, weil es keine Variable $zeilenweise gibt, sondern es gibt ein Array $zeilenweise.
danke ich glaube auf das wollte ich hinaus *g* aber ich möchte ja datensätze in der textdatei speicher und "spalten" durch das ; machen kann ich dann das array auch splitten du hast ja gesagt kann ich doch dann diesen arrays wieder zu variablen machen? (ich glaub die frage ist sinnlos weil ich noch nichts probiert hab und grad etwas confuse bin :) )
Frage: Kann man eigentlich dann mit php ganze datenbanken geschichten machen und evtl. selber eine machen (ist nur eine frage :) )
gruss thomas
Hi,
Frage: Kann man eigentlich dann mit php ganze datenbanken geschichten machen und evtl. selber eine machen
Ja klar. Die Datenbank kann man, so wie von dir angedacht, als txt file machen und die Spalten dann ueber ein Trennzeichen ";" oder "," usw. anlegen, aber das ist nur zu empfehlen, bei kleineren Sachen. Ansonsten nimmt man eine richtige Datenbank z.B. MySQL zur Hand. PHP bietet da sehr maechtige Funktionen, um auf MySQL (oder auch Oracle, bzw. Postgres usw.) zuzugreifen. Datenbanken im txt Format, die ueber ein Komma getrennt sind, bezeichnet man auch als CSV (comma seperated files). Das ist oft der kleinste gemeinsame Nenner zwischen unterschiedlichen Datenbanken, der einen Im- bzw. Export auf sehr unterschiedliche Systeme moeglich macht. Man kann aber natuerlich auch eine Datenbank an sich auf diesem Wege anlegen.
Sich frueher oder spaeter mit Datenbanken zu beschaeftigen bietet sich imho an, wenn man sich fuer PHP interessiert.
Gruesse
Ralf
Hi,
Frage: Kann man eigentlich dann mit php ganze datenbanken geschichten machen und evtl. selber eine machen
Ja klar. Die Datenbank kann man, so wie von dir angedacht, als txt file machen und die Spalten dann ueber ein Trennzeichen ";" oder "," usw. anlegen, aber das ist nur zu empfehlen, bei kleineren Sachen. Ansonsten nimmt man eine richtige Datenbank z.B. MySQL zur Hand. PHP bietet da sehr maechtige Funktionen, um auf MySQL (oder auch Oracle, bzw. Postgres usw.) zuzugreifen. Datenbanken im txt Format, die ueber ein Komma getrennt sind, bezeichnet man auch als CSV (comma seperated files). Das ist oft der kleinste gemeinsame Nenner zwischen unterschiedlichen Datenbanken, der einen Im- bzw. Export auf sehr unterschiedliche Systeme moeglich macht. Man kann aber natuerlich auch eine Datenbank an sich auf diesem Wege anlegen.
Sich frueher oder spaeter mit Datenbanken zu beschaeftigen bietet sich imho an, wenn man sich fuer PHP interessiert.
ja ich mach auch gerade so mysql geschichten nur ich hab jetzt ein "auftrag" so was ohne datenbank zumachen deswegen benötige ich das ; als "spalte" von einer tabelle in einer txt file!
gruss thomas
Moin,
ja so ähnlich mit fgets!
Du solltest dir dringend angewöhnen bei Fragen zu Funktionen zuerst in die Dokumentation zu schauen. In http://www.php.net/manual/de/function.fgets.php steht klipp und klar "Gibt eine Zeile bis zu length -1 Bytes Länge zurück[...] Die Zeile endet an einem Zeilenumbruch[...]".
Dein $inhalt enthält also die erste Zeile (oder gar weniger, wenn als zweites Argument zu wenig übergeben wird) und ein Aufruf an explode("\n",$inhalt) ist sinnlos.
Wenn du ohnehin alle Zeilen irgendwann mal brauchst, nimm file(), wenn du wirklich nur die erste Zeile willst, tut es ein fgets($filehandle, filesize("dateiname")) bestimmt auch.
Eventuell ist auch http://www.php.net/manual/de/function.fgetcsv.php für dich interessant
--
Henryk Plötz
Grüße aus Berlin