\n durch <br> ersetzen
Aenogym
- php
0 wahsaga0 Aenogym
0 Christian Kruse0 rob0 Fabian St.0 rob
0 Sven Rautenberg
hi,
ich möchte sämtliche absätze in einem string durch <br>-tags ersetzen lassen.
mit $text = str_replace("\n", "<br>", $text); funktionierts irgendwie nicht...
kann mir jemand sgaen, wie das geht?
danke,
Aenogym
hi,
ich möchte sämtliche absätze in einem string durch <br>-tags ersetzen lassen.
hast du dir bereits die funktion nl2br() angeschaut?
gruß,
wahsaga
hi,
ich möchte sämtliche absätze in einem string durch <br>-tags ersetzen lassen.
hast du dir bereits die funktion nl2br() angeschaut?
gruß,
wahsaga
dankeschön. bin ich dumm, hab das schon hundertmal benutzt aber hatte wohl grade nen blackout.
die andere antwort von christian kruse scheint aber sicherer zu sein. daher werd ich die mal ausprobieren.
danke euch beiden,
Aenogym
Hallo Aenogym,
ich möchte sämtliche absätze in einem string durch <br>-tags
ersetzen lassen.mit $text = str_replace("\n", "<br>", $text); funktionierts
irgendwie nicht...kann mir jemand sgaen, wie das geht?
Dazu hatte ich mal was in den User-Comments geschrieben:
http://de.php.net/manual/en/function.nl2br.php
Dummerweise sind die nicht verfuegbar, gerade. Naja, ich hatte
geschrieben, dass aufgrund der Plattform-Unterschiede nl2br()
unbrauchbar sei. Man sollte
$txt = preg_replace('!\015\012|\012|\015!','<br>',$txt);
benutzen.
Grüße,
CK
Naja, ich hatte
geschrieben, dass aufgrund der Plattform-Unterschiede nl2br()
unbrauchbar sei.
Könntest Du das vielleicht nochmal hier erklären? Ich benutze nl2br() des öfteren und ich habe bisher noch nicht gemerkt, daß es da irgendwie zu Problemen kam. Auf der Arbeit benutze ich OS X, zu Hause GNU/Linux und Windows.
Ich konnte hier nie irgendwelche Probleme beobachten. So spontan könnte ich mir auch nur vorstellen, daß MacOS 9 Probleme bereiten könnte, aber eigentlich bin ich der Meinung, daß mir das dann eigentlich irgendwann schon mal aufgefallen sein sollte...
Wäre nett, wenn Du da noch mal kurz was zu schreiben könntest.
Gruß, rob
Hi rob!
Naja, ich hatte
geschrieben, dass aufgrund der Plattform-Unterschiede nl2br()
unbrauchbar sei.
Könntest Du das vielleicht nochmal hier erklären?
Was Christian wahrschenlich meint ist das auf den verschiedenen Betriebssystemen Zeilenumbrüche anders gespeichert werden, z.B. erzeugt man in Windows erst durch \n\r einen Zeilenumbruch, in Linux hingegen schon mit \n. Was die Macs betrifft weiß ich nicht.
Grüße,
Fabian St.
Was Christian wahrschenlich meint ist das auf den verschiedenen Betriebssystemen Zeilenumbrüche anders gespeichert werden
Jep, das ist mir schon klar.
z.B. erzeugt man in Windows erst durch \n\r einen Zeilenumbruch, in Linux hingegen schon mit \n.
Bei Windows ist es \r\n nicht \n\r.
Was die Macs betrifft weiß ich nicht.
Ja, jetzt ist das so eine Sache. Da Mac OS X einen BSD-Unterbau hat, werden die Umbrüche im Unix-Stil mit \n codiert. Auf früheren Systemen wurde aber ein \r eingesetzt. Das machen einige Mac-Programme auch jetzt noch auf OS X. Ist also hier ein wenig durcheinander.
Naja, jedenfalls konnte ich bisher auf keinem System bemerken, daß nl2br() Schwierigkeiten bereitete, darum wollte ich wissen, ob mir da jemand was genaueres sagen kann...
Ich meine auch, daß ich selbst auf OS 9 damit keine Probleme hatte (obwohl PHP dafür in anderen Fällen an und zu schonmal \r nicht als Umbruch akzeptieren wollte...)
Gruß, rob
Moin!
Dazu hatte ich mal was in den User-Comments geschrieben:
http://de.php.net/manual/en/function.nl2br.php
Dummerweise sind die nicht verfuegbar, gerade. Naja, ich hatte
geschrieben, dass aufgrund der Plattform-Unterschiede nl2br()
unbrauchbar sei.
Stimmt aber nicht. nl2br() funktioniert zumindest bei meiner PHP-Version bestens mit allen möglichen Zeilenschaltungen aller Systeme.
Man sollte
$txt = preg_replace('!\015\012|\012|\015!','<br>',$txt);
benutzen.
Sollte man nicht. nl2br() funktioniert.
- Sven Rautenberg
Hi,
Stimmt aber nicht. nl2br() funktioniert zumindest bei meiner PHP-Version bestens mit allen möglichen Zeilenschaltungen aller Systeme.
Zitat aus der Doku:
Returns string with '<br />' inserted before all newlines.
Das heißt, daß die Funktion nicht brauchbar ist, wenn man ein korrektes HTML-Dokument ausgeben will - nur mit einem XHTML-Dokument ist es korrekt.
Man sollte
$txt = preg_replace('!\015\012|\012|\015!','<br>',$txt);
benutzen.
Wobei ggf. (für XHTML-Dokumente) noch der / ins <br> muß.
nl2br() funktioniert.
Unter Umständen. s.o.
cu,
Andreas
hi,
Zitat aus der Doku:
Returns string with '<br />' inserted before all newlines.Das heißt, daß die Funktion nicht brauchbar ist, wenn man ein korrektes HTML-Dokument ausgeben will - nur mit einem XHTML-Dokument ist es korrekt.
warum die da nicht mal einen zusätzlichen, optionalen parameter eingebaut haben, mit dem man von <br> auf <br /> "umschalten" kann, ist mir nach wie vor ein rätsel.
gruß,
wahsaga
Moin!
warum die da nicht mal einen zusätzlichen, optionalen parameter eingebaut haben, mit dem man von <br> auf <br /> "umschalten" kann, ist mir nach wie vor ein rätsel.
Mir nicht. nl2br ist aus der Zeit, als es in PHP (3?) Mode war, für alltägliche dumme Probleme erschlagende und einfach anwendbare Funktionen zu schreiben. PHP, wie wir es heute kennen, ist ja schließlich aus einer Template-Engine hervorgegangen. Und in einer Template-Engine braucht man unter Umständen eben mal die Wandlung, wie sie nl2br($string) liefert.
Sicher: Mit einem optionalen zweiten Parameter hätte man kompatibel bleiben können. Dieser Parameter sollte dann aber lieber den einzufügenden String enthalten, so dass man
nl2br($string) -> fügt <br> ein
nl2br($string, "<br>") -> fügt <br> ein
nl2br($string, "<br/>") -> fügt <br/> ein
machen könnte.
Hat man aber nicht, muß man so mit leben. Wer seine Textausgabe ernst meint, der wird sowieso kein nl2br() verwenden, sondern vernünftige <p>-Absätze generieren. :)
- Sven Rautenberg
Hi Sven,
Hat man aber nicht, muß man so mit leben. Wer seine Textausgabe ernst meint, der wird sowieso kein nl2br() verwenden, sondern vernünftige <p>-Absätze generieren. :)
Naja, aber innerhalb eines Absatzes kann und darf dennoch durchaus ein weicher Umbruch erfolgen. ;-)
Kurt
Hallo wahsaga,
warum die da nicht mal einen zusätzlichen, optionalen parameter
eingebaut haben, mit dem man von <br> auf <br /> "umschalten"
kann, ist mir nach wie vor ein rätsel.
Ich habe das jetzt mal vorgeschlagen und gleich einen Patch
mitgeschickt. Mal sehen, ob sie es einbauen.
Grüße,
CK
Hi!
warum die da nicht mal einen zusätzlichen, optionalen parameter
eingebaut haben, mit dem man von <br> auf <br /> "umschalten"
kann, ist mir nach wie vor ein rätsel.
Ich habe das jetzt mal vorgeschlagen und gleich einen Patch
mitgeschickt. Mal sehen, ob sie es einbauen.
Dasselbe passiert noch an anderesn Stellen, im Moment fällt mir noch das generierte <input> Feld mit der Session-ID bei use-trans-sid ein.
Vielleicht sollte man sowas(HTML/XHTML) per globaler Konfigurations-Option einstellbar machen?
Grüße
Andreas
Hallo Sven,
Dazu hatte ich mal was in den User-Comments geschrieben:
http://de.php.net/manual/en/function.nl2br.php
Dummerweise sind die nicht verfuegbar, gerade. Naja, ich hatte
geschrieben, dass aufgrund der Plattform-Unterschiede nl2br()
unbrauchbar sei.Stimmt aber nicht. nl2br() funktioniert zumindest bei meiner PHP-
Version bestens mit allen möglichen Zeilenschaltungen aller
Systeme.
Oh, fein. Dann haben sie den Bug endlich gefixed. Ja, jetzt seh
ichs:
while (str < end) {
if (*str == '\r') {
if (*(str+1) == '\n') {
str++;
}
repl_cnt++;
} else if (*str == '\n') {
if (*(str+1) == '\r') {
str++;
}
repl_cnt++;
}
str++;
}
Dann kann ich jetzt ja guten Gewissens umsteigen auf nl2br() ;-)
Grüße,
CK