Zeilenumbruch in einer TXT-Datei ???

Alles, was PHP betrifft, kann hier besprochen werden.

Zeilenumbruch in einer TXT-Datei ???

Postby Rene Knapp » 21. April 2007 19:01

Guten Abend,

Ich habe folgendes Problem:
Ich lese aus einer tabelle alle datensätze aus, die das selbe datum aufweisen.
Danach bekommt der String $String[$c_dates] den Wert $path, $row_dates[1] (enthält den Namen einer Datei) und $paragraph (sollte ein zeilenumbruchzeichen sein). Anschließend wird das ganze in eine Text-Datei hineingeschrieben,abgespeichert und wird später von einem anderen Programm verwendet, welches Zeilenumbruchorientiert ausliest. Und da besteht das Problem:

Die abgespeicherte Text-Datei sieht folgendermaßen aus:
Code: Select all
C://verzeichnis/file1.*C://verzeichnis/file2.*C://verzeichnis/file3.* usw.


Richtig wäre aber:

Code: Select all
C://verzeichnis/file1.*
C://verzeichnis/file2.*
C://verzeichnis/file3.*
usw.


Ich habe mir gedacht, dass \n mein Problem lösen würde, ist aber nicht so. :cry:
Die Ausgabe würde dann so aussehen:
Code: Select all
C://verzeichnis/file1.*\nC://verzeichnis/file2.*\nC://verzeichnis/file3.*\n usw.

Also weiß jemand wie ich einen Zeilenumbruch in eine Textdatei bekomme?

PHP CODE
Code: Select all
$path='C://verzeichnis/';
$paragraph='\n';

$db=mysql_connect("localhost","root","");
   mysql_select_db("datenbank");

$INQ="SELECT * FROM tabelle WHERE date = '$date' ";
                                 
   $result_dates=mysql_query($INQ);
   $numbers_dates=mysql_num_rows($result_dates);
      
   for($c_dates=0;$c_dates<$numbers_dates;$c_dates++)
   {
      $row_dates=mysql_data_seek($result_dates,$c_dates);
      $row_dates=mysql_fetch_row($result_dates);
       
             $String[$c_dates].=$path.$row_dates[1].$paragraph;
        }
   mysql_close($db);
$SUM_String=$String[$c_dates];

$fp = fopen($path.$tracklist_filename.'.txt', 'w');
fwrite($fp, $SUM_String);
fclose($fp);
User avatar
Rene Knapp
 
Posts: 37
Joined: 26. September 2006 14:17

Postby Wiedmann » 21. April 2007 19:28

Möglicherweise erwartet dein anderes Programm ja Zeilenumbrüche im DOS und nicht im *nix Format?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Zeilenumbruch in einer TXT-Datei ???

Postby ManUnix » 21. April 2007 19:28

Hi Rene,

Rene Knapp wrote:Also weiß jemand wie ich einen Zeilenumbruch in eine Textdatei bekomme?


suche
Code: Select all
$paragraph='\n';

ersetze mit
Code: Select all
$paragraph="\n";


Ein Zeilenumbruch in einer Datei unter Windows wird mit "\n\r" erreicht.

cu,
Manu
User avatar
ManUnix
 
Posts: 113
Joined: 16. April 2006 15:14

Postby Rene Knapp » 21. April 2007 20:01

@ManUnix
Vielen Dank erstmals für die Hilfe

Leider funkt. weder mit $paragraph ="\n"; noch mit $paragraph=""\n\r"";
Statt die \n\r werden nun □□ (Kästchen)eingefügt (Bei \n nur 1 Kästchen ):
Code: Select all
C://verzeichnis/file1.txt□□C://verzeichnis/file2.mp3□□C://verzeichnis/file3.pdf□□ usw.


Leider nicht:
Code: Select all
C://verzeichnis/file1.txt
C://verzeichnis/file2.mp3
C://verzeichnis/file3.pdf
usw.


@Wiedmann

Möglicherweise erwartet dein anderes Programm ja Zeilenumbrüche im DOS und nicht im *nix Format?


Dateiendungen sind in diesen Fall irrelevant, da es nicht beim anderen Programm scheitert, sondern im Format der Txt-Datei. * (Stern) steht nur für optionale dateiendung (entnommen aus der Datenbank).
User avatar
Rene Knapp
 
Posts: 37
Joined: 26. September 2006 14:17

Postby Wiedmann » 21. April 2007 20:05

Leider funkt. weder mit $paragraph ="\n"; noch mit $paragraph=""\n\r"";

Das mit den Single Quotes hab ich leider übersehen. Musst natürlich, wie "ManUnix" schrieb, Double Quotes nehmen.

Der Umbruch ist bei Windows "\r\n" und nicht ""\n\r"". Also:
Code: Select all
$paragraph = "\r\n";
oder
$paragraph = PHP_EOL;
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby ManUnix » 21. April 2007 20:10

Rene Knapp wrote:Statt die \n\r werden nun □□ (Kästchen)eingefügt (Bei \n nur 1 Kästchen ):


hoppla, andersrum: "\r\n"

geht's damit? (okay, bissl zu langsam gewesen ;))
User avatar
ManUnix
 
Posts: 113
Joined: 16. April 2006 15:14

Postby Rene Knapp » 21. April 2007 20:13

Wiedmann wrote:
Leider funkt. weder mit $paragraph ="\n"; noch mit $paragraph=""\n\r"";

Das mit den Single Quotes hab ich leider übersehen. Musst natürlich, wie "ManUnix" schrieb, Double Quotes nehmen.

Der Umbruch ist bei Windows "\r\n" und nicht ""\n\r"". Also:
Code: Select all
$paragraph = "\r\n";
oder
$paragraph = PHP_EOL;


Da kann ich nur sagen: JA JETZT FUNKTIONIERTS !!:D
Also so gehörts richtig:
Code: Select all
$path='C://verzeichnis/';
$paragraph="\r\n"; // oder $paragraph = PHP_EOL;

$db=mysql_connect("localhost","root","");
   mysql_select_db("datenbank");

$INQ="SELECT * FROM tabelle WHERE date = '$date' ";
                                 
   $result_dates=mysql_query($INQ);
   $numbers_dates=mysql_num_rows($result_dates);
     
   for($c_dates=0;$c_dates<$numbers_dates;$c_dates++)
   {
      $row_dates=mysql_data_seek($result_dates,$c_dates);
      $row_dates=mysql_fetch_row($result_dates);
       
             $String[$c_dates].=$path.$row_dates[1].$paragraph;
        }
   mysql_close($db);
$SUM_String=$String[$c_dates];

$fp = fopen($path.$tracklist_filename.'.txt', 'w');
fwrite($fp, $SUM_String);
fclose($fp);


Das ergibt:

Vielen Dank!
User avatar
Rene Knapp
 
Posts: 37
Joined: 26. September 2006 14:17

Postby Wiedmann » 21. April 2007 20:18

Naja, wenn du jetzt noch das mit dem mysql_data_seek() weglässt und das fwrite direkt in der Schleife machst, ist's i.O. ;-)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Rene Knapp » 21. April 2007 20:39

Wiedmann wrote:Naja, wenn du jetzt noch das mit dem mysql_data_seek() weglässt und das fwrite direkt in der Schleife machst, ist's i.O. ;-)


HA! Wäre auch eine Idee... :roll:
User avatar
Rene Knapp
 
Posts: 37
Joined: 26. September 2006 14:17


Return to PHP

Who is online

Users browsing this forum: No registered users and 14 guests