Moin!
Hallo,
ich hoffe das liest noch jemand!
Ich habe nach wie vor Probleme mit dem Zeilenwechselzeichen.
define ('NL', "\r\n"); bzw. define ('NL', "\n"); definieren ja den Zeilenwechsel.
PHP hat da schon eine Konstante vordefiniert: PHP_EOL enthält den für die Plattform, auf der es läuft, zuständigen Zeilenwechsel. Ohne dass man sich überlegen muss, ob man auf Windows oder Linux läuft.
Aber diese Definition gilt auch für alle aufgerufenen Routinen.
Nun benötige ich wenn ich HTML erzeuge <br> als Zeilenwechsel.
Wie gut, dass es da eine Funktion gibt, die das erledigt: nl2br() macht aus Zeichenketten mit Zeilenschaltungen Zeichenketten mit Zeilenschaltungen und <br/>.
Ich habe daher das Zeilenwechselzeichen mit der Variablen $NL definiert,
einmal als
$NL="<br>";
-- akzeptiert
und einmal als
$NL=0x0D0x0A;
-- Formaler Fehler
bzw.
$NL=0x0A;
Wenn ich dann im letzten Fall
"aaaaaa" . $NL . "bbbbbb" in eine Datei schreibe, so erscheint dort
aaaaa10bbbbb.
Wie muss ich das Newlinezeichen (\r\ bzw \n in einer Variablen definieren?
Genauso, wie bei der Definition von Konstanten.
Ich würde aber mal fragen wollen, welchen Effekt du damit erreichen willst, bzw. welches Problem du zu lösen gedenkst. Ich würde pauschal davon ausgehen, dass beide Plattformen mit den Zeilenschaltungen der jeweils anderen umgehen können, und würde das nur dann als ein zu programmierendes Problem ansehen, wenn du irgendwelche Dateien für unwissende Kunden erzeugst. Aber NICHT, wenn du nur irgendwelche internen Daten abspeichern willst. Denn PHP kann prima auch unter Windows mit Linux-Zeilenenden umgehen. Und auch Windows-Browser können das. :)
- Sven Rautenberg