kostenloser Webspace werbefrei: lima-city


String bzw Array in eine .txt datei schreiben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    ranglisten

    Kostenloser Webspace von ranglisten

    ranglisten hat kostenlosen Webspace.

    hallo...

    ich versuch jetzt schon ewig das hinzubekommen, aber es klappt nicht..
    mein problem besteht darin, das ich einen array, oder auch einen string in eine txt datei schreiben m?chte.

    doch voraussetzung ist, das dort untereinander geschrieben wird.

    sprich die txt soll dann so aussehen


    Klaus M?ller M?llershausen
    Peter Schulze Musterhausen
    nocheinname nachname stadt

    man beachte das zwischen den eintr?gen ein leerzeichen ist. ich bekomme das immer nur so hin, das er mit so ein viereck anstatt diesem zeilenumbruch macht.

    hier mein code
    in $temp[] stehen die daten drin, nach dem muster
    $temp = array["Vorname","Nachname","Wohnort"]
    for($i=0;$i<sizeof($temp);$i++)
    {
    $mitglieder = $mitglieder."\n".$temp[$i];
    }

    der daraus resultierende string soll dann in die txt datei geschrieben werden, wie bekomme ich das hin? wobei das in die datei schreiben ja nicht das prob ist, nur das er mir die zeilenumbr?che macht is das was ich nicht hinbekomme..

    mfg
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Mit \n m?sste das eigentlich gehen. Aber es kann sein, dass du einen komischen Texteditor benutzt. Probiers mal mit \n\r ! Das sind dann DOS-Zeilenumbr?che. Damit m?sste es auf jeden Fall gehen. Wenn nicht mach einfach

    $mitglieder = $mitglieder."
    ".$temp[$i];

    Und in eine Datei kannst du so schreiben:

    $fp = fopen("data.txt","w+");
    flock($fp,1);
    flock($fp,2); # "verriegelt" die Datei
    fputs($fp,$mitglieder);
    flock($fp,3); # gibt sie wieder "frei"
    fclose($fp);
  4. Hallo ranglisten!

    Normalerweise schreibt PHP Zeilenumbr?che mit "\n". Ich habe damit noch nie Probleme gehabt. Schau dir die erzeugte Datei mal in einem Hex-Editor an. Dort m?sste am Zeilenende "0d0a" oder nur "0a" stehen. Wenn es wirklich nicht geht, dann musst du eben die Zeilenumbr?che explizit einf?gen:

    F?r Windows und DOS:
    "\x0d\x0a"

    und f?r richtige Betriebssysteme:
    "\x0a"

    Beispielsweise mit chr():
    http://www.php.net/manual/de/function.chr.php

    "\x0d" entspricht chr(13);
    "\x0a" entspricht chr(10);

    MfG
    alopex
  5. 0******a

    phattek schrieb:
    Probiers mal mit \n\r !

    Nee, besser mit "\r\n" *g*

    @alopex:
    Wozu die Hexwerte benutzen, wenns bequemer geht?

    @topic:
    Normalerweise muss man sich auf dem System selbst unter PHP nicht darum k?mmern, ein "\r" (carriage return - Wagenr?cklauf) einzuf?gen. Man benutzt einfach nur "\n". Auf einem Windowssystem wird das "\r" von den schreibenden Funktionen eingef?gt. Auf anderen Systemen wird das "\r" gar nicht benutzt und nur das "\n" wird geschrieben. F?r Windows ist ein Zeilenumbruch "\r\n", f?r andere Systeme nur "\n". Es gibt zwei Ursachen, warum das nicht klappt:
    1.:
    Man hat auf einem Windowssystem die Datei im Bin?rmodus ge?ffnet. Das bedeutet, dass man die "\r"s vor den "\n"s auf jeden Fall selbst schreiben muss.
    2.:
    Man hat in PHP unter Linux/Unix/etc. alles richtig gemacht, doch beim ?bertragen auf einen Windowsrechner hat man FTP nicht im ASCII-Mode benutzt. Der ASCII-Mode bei FTP sorgt daf?r, dass w?hrend der ?bertragung einer Datei alle "\n"s durch "\r\n"s bzw. umgekehrt ersetzt werden.

    Eins von beiden hast du falsch gemacht.
  6. Juchhuh, ich wei? doch einmal etwas besser als 0-checka!
    (freu!)


    Wozu die Hexwerte benutzen, wenns bequemer geht?


    Weil ein "Linefeed" oder "\n" nicht immer "\x0a" bedeutet, beispielsweise unter Windows-PHP. Dort wird aus "\n", welches in Dateien geschrieben wird (wer gibt schon bei fopen() den Modifikator "b" an?), auf wundersame Weise (und nur Bill Gates wei? warum) ein "\x0a\x0d". Und sp?testens dann, wenn man versucht, ein unter Linux (Beispiel aus dem realen Leben: Lima-City-Webspace) erzeugtes Logfile unter Windows mit PHP zu analysieren und mit anderen (auf die gleiche Art erzeugten) Logfiles f?r den doofen Webalizer zusammenzuf?gen, wirft man "\n", "\r" sowie die Unterscheidung zwischen "bin?ren" und textbasierten" Dateien weg und schreibt "hardverdrahtete" Zeilenumbr?che.

    Ich nenne das (Betriebs-)systemunabh?ngiges Programmieren, das ist zwar nicht bequem, aber es funktioniert.

    MfG
    alopex
  7. 0******a

    alopex schrieb:
    Juchhuh, ich wei? doch einmal etwas besser als 0-checka!
    (freu!)

    Zu fr?h gefreut...


    alopex schrieb:
    Weil ein "Linefeed" oder "\n" nicht immer "\x0a" bedeutet, beispielsweise unter Windows-PHP. Dort wird aus "\n", welches in Dateien geschrieben wird (wer gibt schon bei fopen() den Modifikator "b" an?), auf wundersame Weise (und nur Bill Gates wei? warum) ein "\x0a\x0d".

    Genau das habe ich doch auch geschrieben. Nur statt den Hexwerten halt "\r\n"...
    \r = 0x0d = 13
    \n = 0x0a = 10
    Du hast hier also den Fehler gemacht als du schriebst, das ein "\x0a\x0d" geschrieben wird. Es ist genau anders herum ("\x0d\x0a"). Auch im obigen Zitat ist die Aussage ein "\n" w?rde nicht immer "\x0a" bzw. 10 sein, v?lliger Humbug.
    N?chstes Mal genauer lesen und sch?n deinem Moderator huldigen
    :blah:
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!