SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 26.04.2007, 07:55:17
Arcerion Arcerion ist offline
Anfänger
 
Registriert seit: Apr 2007
Beiträge: 5
Zeilenumbruch in Linux für Windows

Hallo,

ich bin neu hier und habe auch gleich ein Problem.

In meinem Script erstelle ich eine simple Textdatei in der Bestelldaten stehen.
Mein Problem ist nun allerdings, dass ich nach jedem Datensatz einen Zeilenumbruch
machen muss. Das ist weiter ja auch kein Problem. Nur, das Script läuft auf einem Linux-Server (Linux web2 2.6.18) und erstellt deshalb nun den Zeilenumbruchcode für Linux
(\n = Hex: 0A). Für die Firma, bei der diese Datei verarbeitet wird verwenden Sie allerdings Windows und brauchen daher den Zeilenumbruch \r\n(Hex: 0D0A). Verwende ich diesen Code im PHP Script auf dem Linux-Webserver so erhalte ich den Hexwert 0A0D0A.

Nun meine Frage, wie kann ich auf einem Linuxserver (\n) den Zeilenumbruch für Windows (\r\n) erstellen?

P.S. Die Hexwerte habe ich mit angegeben, da die Firma, so wurde mir gesagt, die Hexwerte einliest.

Ich hoffe mir kann da jemand weiterhelfen. Ich habe bereits einiges erfolglos ausprobiert und bin mit meinem Latain so langsam am Ende.

Vielen Dank im voraus an alle.

Noch was:
PHP Version 4.4.6-pl0-gentoo

Geändert von Arcerion (26.04.2007 um 08:03:59 Uhr) Grund: PHP Versionsangabe
Mit Zitat antworten
  #2  
Alt 26.04.2007, 09:11:53
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: Zeilenumbruch in Linux für Windows

Zitat:
In meinem Script erstelle ich eine simple Textdatei in der Bestelldaten stehen.
Mein Problem ist nun allerdings, dass ich nach jedem Datensatz einen Zeilenumbruch
machen muss.
wie machst du denn den zeilenumbruch? mit einem echo "\n";? warum machst du nicht einfach ein echo "\r\n";?
Mit Zitat antworten
  #3  
Alt 26.04.2007, 11:52:52
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Zeilenumbruch in Linux für Windows

Zitat:
Zitat von feuervogel Beitrag anzeigen
wie machst du denn den zeilenumbruch? mit einem echo "\n";? warum machst du nicht einfach ein echo "\r\n";?
echo? Sicher deshalb, weil er den Windowszeilenumbruch in einer Datei und "Clientfenster" haben möchte.

@Arcerion
Zitat:
Nun meine Frage, wie kann ich auf einem Linuxserver (\n) den Zeilenumbruch für Windows (\r\n) erstellen?
Indem Du beim Erstellen der Textdatei anstelle von "\n" eben "\r\n" verwendest

PHP-Code:
$name './datei.txt';
$arr = array('Ich''bin''der''Text');
file_put_contents($nameimplode("\r\n"$arr)); 
Falls der Text schon UNIX Zeilenumbrüche enthält, die Windows-lesbar werden sollen:
PHP-Code:
$neu str_replace("\n""\r\n"$alt); 
Mit Zitat antworten
  #4  
Alt 26.04.2007, 15:57:24
Arcerion Arcerion ist offline
Anfänger
 
Registriert seit: Apr 2007
Beiträge: 5
AW: Zeilenumbruch in Linux für Windows

Danke für die Antworten.

Wenn ich die Variante mit file_put_contents(...) versucher erhalte ich von PHP die Fehlermeldung: "Fatal error: Call to undefined function: file_put_contents() "

Ich brauche den Hexcode "0D0A"
Hier mal ein Teil meines Codes:

$string = $auftrag.substr($HTTP_SESSION_VARS["bestellung"][$i],8,384);
$file = fopen($datei,"a+");
fwrite($file,$string."\r\n");
fclose($file);

Bei dieser Variante erhalte ich leider ein 0A0D0A

$string = $auftrag.substr($HTTP_SESSION_VARS["bestellung"][$i],8,384);
$file = fopen($datei,"a+");
fwrite($file,$string."\n");
fclose($file);

Bei dieser Variante erhalte ich leider ein 0A0A

$string = $auftrag.substr($HTTP_SESSION_VARS["bestellung"][$i],8,384);
$file = fopen($datei,"a+");
fwrite($file,$string."\r");
fclose($file);

Bei dieser Variante erhalte ich leider ein 0A0D (also verkehrt herum, soll ja 0D0A werden)


Gibt es vieleicht irgendeine Möglichkeit, PHP explizit zu sagen, dass der HEXwert des Zeilenumbruches 0D0A sein soll, da PHP/Linux scheinbar die Escape-Folge umwandelt.

Geändert von Arcerion (26.04.2007 um 15:57:53 Uhr)
Mit Zitat antworten
  #5  
Alt 29.04.2007, 14:23:35
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Zeilenumbruch in Linux für Windows

Zitat:
Zitat von Arcerion Beitrag anzeigen
Wenn ich die Variante mit file_put_contents(...) versucher erhalte ich von PHP die Fehlermeldung: "Fatal error: Call to undefined function: file_put_contents() "
Aktuell ist PHP 5.2.1.

Zitat:
fwrite($file,$string."\r\n");

Bei dieser Variante erhalte ich leider ein 0A0D0A

fwrite($file,$string."\n");

Bei dieser Variante erhalte ich leider ein 0A0A
Jo, das ist eindeutig. Deine Variable $string beinhaltet als letztes Zeichen schon ein "\n".

fwrite($file, trim($string) . "\r\n");

Zitat:
Gibt es vieleicht irgendeine Möglichkeit, PHP explizit zu sagen, dass der HEXwert des Zeilenumbruches 0D0A sein soll,
Na klar: "\r\n"

"\r" steht für CR => 0xD
"\n" steht für LF => 0xA

Zitat:
da PHP/Linux scheinbar die Escape-Folge umwandelt.
Das scheint nur so. Kläre lieber, woher das "\n" am Schluß von $string herkommt.
Mit Zitat antworten
  #6  
Alt 08.05.2007, 17:06:04
Benutzerbild von Lord Ganymed
Lord Ganymed Lord Ganymed ist offline
Anfänger
 
Registriert seit: May 2007
Ort: Gießen
Alter: 39
Beiträge: 47
AW: Zeilenumbruch in Linux für Windows

Richtig, da hast du bereits ein Zeilenumbruch am Ende.
PHP-Code:
trim($string); 
Damit kannst du unnötigen "whitespace" entfernen, also auch Leerzeichen Zeilenumbrüche am Ende eines Strings.
Mit Zitat antworten
  #7  
Alt 09.05.2007, 09:40:46
Arcerion Arcerion ist offline
Anfänger
 
Registriert seit: Apr 2007
Beiträge: 5
AW: Zeilenumbruch in Linux für Windows

Danke für eure Antworten.

Da hat sich tatsächlich ein weiterer Zeilenumbruch eingeschlichen.
Nachdem ich diesen nun mit trim() entfernt habe klappt die ganze Sache wieder einwandfrei.

Nochmal ein rießen großen Dankeschön an alle.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
windows unter linux feuervogel Off Topic Area 14 12.02.2007 13:41:27
Upload unter Linux und windows Achantas PHP für Fortgeschrittene und Experten 9 01.12.2006 16:41:42
Windows ist Illegal Lars_oha Off Topic Area 0 25.10.2003 20:21:23
OT: Linux Ben20 PHP Grundlagen 24 10.09.2002 19:20:22
Module unter Windows lastrebel PHP Grundlagen 7 06.07.2002 15:08:18


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:16:08 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt