\n und direkter Umbruch im Quellcode
Adrian
- php
Hallo!
Gehe ich richtig von der Annahme aus, dass wenn man vereinfach folgendes schreibt:
echo "text text\ntext text";
dies dasselbe ist, wie das folgende:
echo "text text
text text";
?
Denn mein Localhost scheint dies nicht so zu sehen, obwohl ich das so verstanden hatte, als ich mir die betreffenden Kapitel durchgelesen habe...
Wenn die obige Annahme richtig ist, gebe ich euch mal meinen Quellcode, ansonsten hat das ja keinen Sinn.
Mit freundlichen Grüßen,
Adrian
echo "text text\ntext text";
inwiefern helfen Leerzeichen links und rechts vom \n ?
MFG
bleicher
Hallo!
echo "text text\ntext text";
inwiefern helfen Leerzeichen links und rechts vom \n ?
Leerzeichen helfen leider nicht, weil ich explode() nutze und damit eine Text-Datei verarbeite... Der gesuchte Trenner ist nämlich "#-end-#\n" und dieses \n darin verarbeitet er manchmal, manchmal aber auch nicht, ich bin mir dabei nicht so ganz sicher wann er was macht. ;-)
Mit freundlichen Grüßen,
Adrian
gudn tach!
Gehe ich richtig von der Annahme aus, dass wenn man vereinfach folgendes schreibt:
echo "text text\ntext text";
dies dasselbe ist, wie das folgende:
echo "text text
text text";
>
> ?
manchmal.
auf unix-systemen ist der standard-zeilenumbruch \n
in windows-systemen kommt noch ein \r dazu.
prost
seth
Hallo!
auf unix-systemen ist der standard-zeilenumbruch \n
in windows-systemen kommt noch ein \r dazu.
Oha, das ist gut zu wissen. D.h., um mein Script mit beiden Systemen kompatibel zu machen, muss ich erst das System des Servers abfragen? (Auf jeden Fall ist die erste Frage erst mal geklärt.)
Gibt es da nicht eine elegantere Methode?
Mit freundlichen Grüßen,
Adrian
gudn tach!
Oha, das ist gut zu wissen. D.h., um mein Script mit beiden Systemen kompatibel zu machen, muss ich erst das System des Servers abfragen? (Auf jeden Fall ist die erste Frage erst mal geklärt.)
Gibt es da nicht eine elegantere Methode?
ein einheitliches dateiformat. ich ziehe meist das unix-format vor, da dann auch ftp-automatismen weniger vermurksen und naja, kleiner sind die dateien dann auch.
voraussetzung ist also, dass du einen editor benutzt, bei dem du einstellen kannst, welches format du verwenden moechtest, also unix und dass du beim ftp-programm, so du ftp benutzt, die automatische zeilenumbruch-konvertierung abstellst.
als editor, bei dem man das zeilenumbruchformat auswaehlen kann, empfehle ich immer vim. gewoehnungsbeduerftig aber geil.
prost
seth
Hallo!
Ist es denn überhaupt schlimm, wenn ich in einem Unix-System trotzdem \r hinzufüge?
Gibt es da nicht eine elegantere Methode?
ein einheitliches dateiformat. ich ziehe meist das unix-format vor, da dann auch ftp-automatismen weniger vermurksen und naja, kleiner sind die dateien dann auch.
Ich dachte das hängt vom System des Servers ab? Ich kann ja nicht allen Servern der Welt sagen, sie sollen bitteschön Unix benutzen... ^^
Jedenfalls läuft z.B. bei mir zuhause als localhost immer noch Windows (oder habe ich jetzt was falsch verstanden? ich nutze xampp...) und ich tippe darauf, dass auf dem server, den ich nutze, linux läuft... *noob sei* ;-)
Mit freundlichen Grüßen,
Adrian
gudn tach!
Ist es denn überhaupt schlimm, wenn ich in einem Unix-System trotzdem \r hinzufüge?
kommt darauf, was mit der jeweiligen datei passieren soll.
Ich dachte das hängt vom System des Servers ab?
sorry, ich war zu unpraezise.
die wikipedia kann's wohl besser erklaeren: http://en.wikipedia.org/wiki/Newline
Jedenfalls läuft z.B. bei mir zuhause als localhost immer noch Windows (oder habe ich jetzt was falsch verstanden? ich nutze xampp...) und ich tippe darauf, dass auf dem server, den ich nutze, linux läuft... *noob sei* ;-)
ach so, fuehrst du alles auf deinem computer aus oder schiebst du die dateien nach der bearbeitung auf deinem pc auf einen anderen computer?
prost
seth
Hallo!
Ist es denn überhaupt schlimm, wenn ich in einem Unix-System trotzdem \r hinzufüge?
kommt darauf, was mit der jeweiligen datei passieren soll.
Ich überprüfe lediglich, ob eine neue Zeile begonnen wird.
ach so, fuehrst du alles auf deinem computer aus oder schiebst du die dateien nach der bearbeitung auf deinem pc auf einen anderen computer?
Letzteres. Ich erstelle die Dateien zuhause und schiebe sie dann auf einen anderen PC, der online als Server fungiert.
Mit freundlichen Grüßen,
Adrian
gudn tach!
Ich überprüfe lediglich, ob eine neue Zeile begonnen wird.
woher kommt der text, den du pruefst?
ich glaube wir antworten uns zu kurz. was genau hast du vor?
ach so, fuehrst du alles auf deinem computer aus oder schiebst du die dateien nach der bearbeitung auf deinem pc auf einen anderen computer?
Letzteres. Ich erstelle die Dateien zuhause und schiebe sie dann auf einen anderen PC, der online als Server fungiert.
ok, davon bin ich bisher auch ausgegangen.
uebrigens: falls du wissen moechtest, auf welchem system der server laeuft, kannst du das leicht herausfinden, wenn du perl installiert:
head example.org
im windows-cli (cmd). bei "server" steht meistens auch das betriebssystem dabei (diese angabe muss zwar nicht stimmen, sie tut es aber in den meisten faellen).
prost
seth
Hallo!
Ich überprüfe lediglich, ob eine neue Zeile begonnen wird.
woher kommt der text, den du pruefst?
Ich überprüfe eine .inc-Datei (also eine includierte Datei). Wenn ich nun auf dem Server Linux laufen habe kann ich ja nicht \r\n benutzen, oder doch? Erkennt der das trotzdem?
ich glaube wir antworten uns zu kurz. was genau hast du vor?
*gg* Ich will ein Newsarchiv erstellen und dieses in einer Datei namens newsarchiv.inc speichern. Dann soll ein PHP-Script jeweils die einzelnen Einträge rausfiltern und z.B. die letzten 3 in HTML-Code anzeigen. Dafür muss ich die newsarchiv.inc ja einlesen und diese besitzt natürlich Zeilenumbrüche. Die Zeilenumbrüche sind ja aber (wie ich dich verstanden habe) in Linux und Windows anders zu interpretieren oder? gibt es eine Lösung für beide?
ok, davon bin ich bisher auch ausgegangen.
uebrigens: falls du wissen moechtest, auf welchem system der server laeuft, kannst du das leicht herausfinden, wenn du perl installiert:head example.org
im windows-cli (cmd). bei "server" steht meistens auch das betriebssystem dabei (diese angabe muss zwar nicht stimmen, sie tut es aber in den meisten faellen).
Gut ok, aber eleganter wäre es doch, wenn ich das auf beliebige Server anwenden kann oder? ;-) Ich will ja auch nur weiterlernen.
Mit freundlichen Grüßen,
Adrian
gudn tach!
Ich will ein Newsarchiv erstellen und dieses in einer Datei namens newsarchiv.inc speichern. Dann soll ein PHP-Script jeweils die einzelnen Einträge rausfiltern und z.B. die letzten 3 in HTML-Code anzeigen. Dafür muss ich die newsarchiv.inc ja einlesen und diese besitzt natürlich Zeilenumbrüche. Die Zeilenumbrüche sind ja aber (wie ich dich verstanden habe) in Linux und Windows anders zu interpretieren oder? gibt es eine Lösung für beide?
ah, ok. ja, gibt's.
ich gehe mal davon aus, dass ein zeilenumbruch (egal ob nun "\n" oder "\r\n") als trennsymbol der einzelnen news dient.
mit file() kannst du die datei zeilenweise in ein array einlesen. als zeilenende wird hier iirc nur "\n" akzeptiert. macht aber nix, das ist ja sowohl im windows- als auch im linux-format vorhanden. im windows-format ist halt bloss zusaetzlich noch ein "\r" davor (falls du auf den alten mac-zeilenumbruch ruecksicht nehmen willst, beachte auto_detect_line_endings).
im html-code sind "\r" und "\n" weitgehend egal. wenn du also die letzten drei elemente vom via file ausgelesenen array ausgibst, ist es eher woscht, ob da nun noch "\r" drinhaengt oder nicht. falls du dennoch lieber die "\n" und etwaige "\r" vor der ausgabe loeschen moechtest, dann geht das z.b. mit rtrim().
und jetzt noch mal zur verdeutlichung der unterschiede, fuers archiv (oder hat das schon mal einer genauer erklaert?):
datei_nix.txt sei "a\nb"
datei_win.txt sei "a\r\nb"
oeffnest du die datei datei_nix.txt in einem texteditor im unix-format erscheint
a
b
das gleiche erscheint bei der datei datei_win.txt in notepad.
oeffnest du aber die datei_nix.txt in notepad dann wird "\n" nicht als zeilenumbruch, sondern als irgendein nicht gescheit darstellbares zeichen interpretiert, was meist durch ein leeres rechteck dargestellt wird, also in etwa so:
a[]b
(das richtige rechteck habe ich jetzt im unicode nicht suchen wollen und stattdessen einfach box-brackets genommen)
in einem texteditor, der die datei datei_win.txt im unix-format liest wird dagegen das "\n" zwar als zeilenumbruch erkannt, aber das zeichen davor, also "\r", wird als zusaetzliches zeichen angesehen. dargestellt wird es oft durch ^M, also
a^M
b
es gibt programme fuer beide betriebssysteme (windows, *nix), die beide formate unterstuetzen. allerdings ist standardmaessig/traditionell eben "\n" in *nix und "\r\n" in windows der zeilenumbruch.
prost
seth
Hallo!
Ok, vielen Dank. :D
Mit freundlichen Grüßen,
Adrian