Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeilenumbrüche CSV datei

Einklappen

Neue Werbung 2019

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

  • Zeilenumbrüche CSV datei

    Moin,

    ich habe eine CSV datei wo innerhalb einer Zeile Umbrüche vorhanden sind. Ich möchte diesen Teil in HTML ausgeben. Nur schaffe ich es nicht diese Umbrüche zu übernehmen, bzw. in <br /> "umzuschreiben". Habe mit preg_replace schon einige andere Zeichen umgeschrieben.

    zweiwert.png

    Wie kann ich das bewerkstelligen, wie komme ich an den Zeilenumbruch heran?

  • #2
    http://php.net/manual/de/function.nl2br.php

    Kommentar


    • #3
      Dankeschön, das hatte ich auch schon mal gefunden. Mein Problem ist, wenn ich die csv in einen array lese, dann sind die Umbrüche schon ins Nirvana verschwunden. Ich würde sie gerne mit einem <br> oder ähnlichem ersetzen.

      <?php

      $link = "zweiwert.csv";
      $fp = fopen($link, 'r');
      while(($line = fgetcsv($fp)) !== FALSE) {
      foreach($line as $key => $value) {
      echo $key . " - " . $value . "<br>";
      }
      }
      fclose($fp);

      ?>
      damit hab ich das eingelesen, wie kann ich das bewerkstelligen?

      Kommentar


      • #4
        Zitat von schreckag Beitrag anzeigen
        Dankeschön, das hatte ich auch schon mal gefunden. Mein Problem ist, wenn ich die csv in einen array lese, dann sind die Umbrüche schon ins Nirvana verschwunden.
        das ist natürlich Blödsinn, die werden ja nur nicht ausgegeben. Hab das mit
        Code:
        preg_replace('/\R/u', '<br />'
        erstmal hinbekommen. würde mich aber mal interessieren wie das mit nl2br funktionieren soll. breche mir da echt einen ab...

        Kommentar


        • #5
          Dann hast du vielleicht nur einen carriage return (\r) in der CSV und nicht carriage return und line feed (\r\n) als Zeilenumbruch.
          nl2br hätte damit kein Problem aber fgetcsv
          sorry, shift-taste kaputt

          Kommentar


          • #6
            wie kann ich den Unterschied feststellen?

            Kommentar


            • #7
              In einem Texteditor wie z.B. Notepad++ alle Zeichen einblenden
              sorry, shift-taste kaputt

              Kommentar


              • #8
                Geht es hier um die Zeilenumbrüche am Ende einer Zeile oder um die innerhalb von Werten in einer Zeile?
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  Zitat von Meister1900 Beitrag anzeigen
                  In einem Texteditor wie z.B. Notepad++ alle Zeichen einblenden
                  hab ich ja schon gemacht, siehe Post 1 Grafik

                  Kommentar


                  • #10
                    Zitat von Arne Drews Beitrag anzeigen
                    Geht es hier um die Zeilenumbrüche am Ende einer Zeile oder um die innerhalb von Werten in einer Zeile?
                    es geht um die innerhalb einer Spalte; Also innerhalb der Werte einer Spalte

                    Kommentar


                    • #11
                      Ja, aber dann ist nl2br doch was Du suchst oder nicht?
                      PHP-Code:
                      $aLines array_map'nl2br'file('datei.csv'FILE_IGNORE_NEW_LINES) ); 
                      mal als Beispiel ohne das Format zu berücksichtigen.

                      Competence-Center -> Enjoy the Informatrix
                      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                      Kommentar


                      • #12
                        test.csv
                        Code:
                        "foo 1","bar
                        bar 1","baz 1"
                        "foo 2","bar
                        bar 2","baz 2"
                        "foo 3","bar
                        bar 3","baz 3"
                        PHP-Code:
                        function csv2html($filename$encoding) {
                            
                        $html '<table>';

                            
                        $file = new SplFileObject($filename);
                            
                        $file->setFlags(
                                
                        SplFileObject::READ_CSV |
                                
                        SplFileObject::SKIP_EMPTY
                            
                        );

                            foreach (
                        $file as $line) {
                                
                        $html .= '<tr>';
                                foreach (
                        $line as $column) {
                                    
                        $html .= '<td>' nl2br(htmlspecialchars($columnENT_COMPAT$encoding)) . '</td>';
                                }
                                
                        $html .= '</tr>';
                            }

                            
                        $html .= '</table>';

                            return 
                        $html;
                        }

                        echo 
                        csv2html('test.csv''UTF-8'); 

                        Kommentar


                        • #13
                          schreckag : Du must deine Datei mit fgetcsv einlesen und die richtigen Parameter für delimiter und enclosure angeben. Nur so kannst du sicherstellen, das zwischen dem echten (CSV)Zeilenende und einen Zeilenumbruch innerhalb eines Wertes (Strings wie z.B. "ABC\r\nDEF") unterschieden werden kann. Die Werte welche dir fgetcsv dann liefert kannst du dann mit nl2br behandeln.
                          File mach keinen Unterschied bei einem Zeilenvorschub und zerstört deine Struktur. Ebenso wird die Struktur zerstört wenn nl2br pauschal auf den Dateiinhalt losgelassen wird.
                          Edit: hellbringer war schneller und mit dem SplFileObject ist das dann noch einen Zacken schicker
                          hellbringer : ein setCsvControl würde ich noch zufügen..

                          Kommentar


                          • #14
                            Das funktioniert aber ebenfalls nicht, wenn man nur ein carriage return als Zeilenumbruch hat (z.B. auf dem Mac)
                            sorry, shift-taste kaputt

                            Kommentar


                            • #15
                              Zitat von schreckag Beitrag anzeigen

                              hab ich ja schon gemacht, siehe Post 1 Grafik
                              Nein, hast du nicht. Man sieht dort nicht, welche Zeilenumbrüche verwendet werden, z.B.:

                              Unbenannt.PNG


                              sorry, shift-taste kaputt

                              Kommentar

                              Lädt...
                              X