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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
26.04.2007, 07:55:17
|
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
|
26.04.2007, 09:11:53
|
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";?
|
26.04.2007, 11:52:52
|
|
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
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($name, implode("\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);
|
26.04.2007, 15:57:24
|
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)
|
29.04.2007, 14:23:35
|
|
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
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.
|
08.05.2007, 17:06:04
|
|
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.
Damit kannst du unnötigen "whitespace" entfernen, also auch Leerzeichen Zeilenumbrüche am Ende eines Strings.
|
09.05.2007, 09:40:46
|
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.
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 07:16:08 Uhr.
|