PHP <textarea> Text prüfen/filtern und Umbrüche richtig behandeln!

Belee

Lt. Commander
Registriert
Dez. 2006
Beiträge
1.518
Hi

Ich beuutze das hier um den Text der User aus der <textarea> zu überprüfen/filtern/bearbeiten, leider hackt es bei den Umbrüchen bzw. ist es schon ok doch in der Ausgabe in HTML gefällt mir nicht. Der Text steht nämlich jetzt so da:

blabla<br />blabla balbala<br /> //alles in einer Zeile "nicht gut"

sollte so stehen ...

blabla<br />
blablabla blabalba<br />


PHP:
    $utext = trim(strip_tags(stripslashes($utext)));
    $utext = htmlspecialchars($utext);
    $utext = preg_replace('/(?:\r\n?|\n)/', '<br />',$utext);
    $utext = wordwrap($utext, 80, '<br />', true);

Was genau mache ich falsch?
 
Verstehe jetzt nicht was du meinst.

In $utext ist der Text aus dem Formular also aus <textarea>, dieser wird oben durch den Code gejagt und dann in einer Textdatei geschrieben, diese lese ich dann mit einem Script aus. Jeder Text, also User, steht in der Textdatei in einer Zeile. Jedoch nicht nur der Text sondern auch Name, Ort usw.

Sieht ca. so aus:
Name|~|Email|~|Ort|~|Titel|~|Text|~|usw.

Das ist ja auch alles ok, was ich aber irgendwie nicht hinbekomme ist das nach <br /> auch wirklich umgebrochen wird - also im HTML-Quelle Code, die HTML Ausgabe selbst ist ok. Nur beim anschauen dieser
mit einem Texeditor steht jeder Beitrag in einer Zeile, die Anzeige im Browser ist ok.
 
Achso, dann versuchs doch mal mit "\r\n" am ende jedes Eintrages. Und was ich meinte du kannst:
PHP:
    $utext = preg_replace('/(?:\r\n?|\n)/', '<br />',$utext);

durch:

PHP:
$utext = nl2br($utext);

ersetzen.
 
Nee, du hast mich wohl immer noch nicht verstanden.
Das hilft nicht.

Ich habe es aber:
Ich muss den Text vor der Ausgabe nochmal bearbeiten und zwar so...

PHP:
$utext = str_replace("<br />", "<br />\n", $utext);

Dann stimmt die Formatierung im Quelltext selber auch.

Ich muss aber die Umbrüche "\r\n" bei der Verarbeitung am Anfang entfernen, weil jeder Text in der CSV in einer Zeile stehen muss.
Ich markiere quasi mit <br /> die tatsächlichen Umbrüche, und breche den Text dann am Ende genau dort wieder wirklich ab, also nach jedem <br /> , so wie er halt tatsächlich eingegeben wurde. Damit es im Quelltext auch schön aussieht wird halt das "\n" benötigt, die ich ja am Anfang entfernt habe.

Es hat vorher ja auch gut ausgesehen in der Browser-Ausgabe, das <br /> reicht ja in HTML, doch im Quelltext selbst stand der jeweilige Text dann halt in einer Zeile, und bei max. 3000 Zeichen a Text kannst du dir ja vorstellen wie lang so eine Zeile dann war :D
 
Ja jetzt habe ich dich wirklich richtig verstanden ^^. Aber dann war zumindest mein Vorschlag am ende Wieder ein "\r\n" hinzuzufügen nicht so falsch. Was aber nichts daran ändert, dass du um \r\n zu einem <br> zu machen trotzdem nl2br benutzen kannst.

Edit: Ich hab nochmal nachgeguckt nl2br fügt nur hinzu is ok.
 
Zuletzt bearbeitet: (Fehler)
Zurück
Oben