fwrite: unerwünschter Zeilenumbruch am Dateiende

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • fwrite: unerwünschter Zeilenumbruch am Dateiende

    Wenn ich wie im folgenden Beispiel einen Text in eine Datei schreibe, dann ist in der Datei am Dateiende immer ein Zeilenumbruch, das möchte ich nicht.
    PHP-Code:
    $str "blabla";
    $str .= "nochmehrblabla";
    $str .= "     ";
    $file fopen("dateiname.txt""w");
    fwrite($file$str);
    fclose($file); 
    Ich denke dass fwrite() eigentlich nicht von alleine einen Zeilenumbruch beim schreiben einfügt, macht es in meinem Fall jedoch??
    Wenn ich die geschriebene Datei im Hex-Editor öffne, zeigts mir auch ein "0A 0D" am Dateiende an.

    Jemand nen Tipp, ich hab jedenfalls grad ein Brett vorm Kopp

  • #2
    was gibt fwrite zurück?

    Kommentar


    • #3
      fwrite gibt zurück: 25344

      Kommentar


      • #4
        Eigentlich unmöglich!

        Kommentar


        • #5
          ... also wenn ich den String "aaa" in die Datei schreibe, dann gibt fwrite zurück: 3

          Kommentar


          • #6
            und wenn ig die soeben geschriebene Datei im Hex-Editor öffne, dann steht dort drin: 61 61 61 0D 0A ... also definitiv ein Zeilenumbruch... ???

            Kommentar


            • #7
              Das sollte eigentlich nicht so sein. Zeig uns doch mal den Code, den du wirklich benutzt

              Kommentar


              • #8
                ich hab grad gemerkt, die Datei die fwrite erzeugt, hat den Zeilenumbruch am Dateiende gar nicht. Sondern nur wenn ich die auf dem Webserver erzeugte Datei herunterlade, dann hat die heruntergeladene Datei den Zeilenumbruch... komisch. Also an fwrite liegts dann ja nich mehr.

                Hier mal trotzdem der Code:
                PHP-Code:
                public function schreibeDatei($pfad) {
                        
                $filename $pfad
                        
                $str  "";
                        
                $str .= $this->dsa;
                        foreach (
                $this->dsc as $datensatz) {
                            
                $str .= $datensatz;
                        }
                        
                $str .= $this->dse
                        
                        if (!
                $file fopen($filename"w")) {
                            echo 
                "System hann die Datei "$filename" nicht öffnen bzw. anlegen!";
                            return 
                false;
                        }
                        
                        if (!
                fwrite($file$str)) {
                            echo 
                "System hann nicht die Datei "$filename" schreiben!";
                            return 
                false;
                        }
                        
                        if (isset(
                $file)) {
                            
                fclose($file);
                        }
                        return 
                true;
                    } 

                Kommentar


                • #9
                  Das Herunterladen erfolgt bei mir mit einem Link zu einer php-Datei mit folgendem Inhalt:
                  PHP-Code:
                  <?php
                  $file 
                  "dtaus.dta";
                  $dir  "./";
                  $type "text/txt";
                                      
                  twMachDownload($file$dir$type);                    

                  function 
                  twMachDownload($file$dir$type) {
                      
                  header("Content-Type: $type");
                      
                  header("Content-Disposition: attachment; filename=\"$file\"");
                      
                  readfile($dir.$file);    

                  ?>
                  Und wenn ich damit die von fwrite ordnungsgemäß geschriebene Datei herunterlade, dann hat die heruntergeladene Datei den ollen Zeilenumbruch am Dateiende. Kann denn ein Dateiinhalt beim Herunterladen verändert werden, das kommt mir so komisch vor?

                  Oder macht etwa readfile() einen Zeilenumbruch dran?

                  Kommentar


                  • #10
                    Kann denn ein Dateiinhalt beim Herunterladen verändert werden, ...?
                    Ja. Es gibt vorsinflutliche Software, die unterscheidet zwischen Binär- und Textdateien. Bei Textdateien werden gerne Zeilenumbrüche umgewandelt. Hinzufügen von Zeilenumbrüchen ist aber eher ungewöhnlich. ;-)

                    Ersetz mal readfile() durch:

                    PHP-Code:
                    $fh fopen($dir.$file'rb');
                    $buffer fread($fh);
                    fclose($fh);
                    echo 
                    $buffer
                    ... oder noch kürzer mit file_get_contents() + echo().

                    Oder macht etwa readfile() einen Zeilenumbruch dran?
                    readfile() nicht, aber eventuell andere Ausgabe-Funktionen?
                    Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                    Kommentar


                    • #11
                      was steht denn hinter ?> bei Dir? Ist da etwa noch eine Zeile?
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        MelloPie sein Tip war's. Ich hatte hinter dem ?> noch eine leere Zeile in dem Skript mit readfile() stehen!!!

                        Der Tag ist gerettet! Ich danke euch allen für die schnelle Hilfe und wünsch einen guten Rutsch morgen ;-).

                        Kommentar


                        • #13
                          @nathan
                          an diesem Thread sieht man sehr gut wie mühsam es für die Beteiligten war, den Fehler einzugrenzen und zu finden. Denn eine gute Basis hast Du nicht geliefert. Das fängt damit an, dass Du nicht den konkreten code gepostet hast, sondern Beispielcode.

                          Also mein Tipp:
                          poste hier immer den konkreten code, der Probleme verursacht, dann wird Dir sicher gut und schnell geholfen.
                          Beantworte nie Threads mit mehr als 15 followups...
                          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                          Kommentar


                          • #14
                            Okay, du hast recht. Wenn man sich meine Posts so ansieht...
                            Ich werd mir das merken und beim nächsten mal beachten, gleich etwas kompakter das Problem beschreiben. Ich hatte das Problem zu lange bei fwrite vermutet und konnte mir das nicht erklären.
                            Also, DANKE nochmal für eure trotzdem superschnelle Hilfe!

                            Kommentar

                            Lädt...
                            X