php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[Funktion] Umbrüche entfernen


 
dadidi
15-08-2003, 18:16 
 
Hallo ihr Lieben,
mein Problem ist das folgende. Ich habe ein Formularfeld (textarea) aus dem ich einen Textauslese. Nach dem auslesen werden vorne und hinten die unnötigen Leerzeichen entfernt, die Umlaute in Sonderzeichen gewandelt und die /n in <br> mit nl2br umewandelt. Leider entstehen dabei immer zusätliche Zeilen. Die erstmal nur im Quellcode zusehen sind, bei abermahliger bearbeitung des Textes im Formularfeld werden es natürlich immer mehr Leerzeilen.

Ich möcht jetzt diese leerzeilen entfernen. Und weiß nicht wie. Ich kann ja nicht nach den Leerzeilen suchen da sie ja kein Zeichen sind das man dann löschen könnt. Oder Doch?

 
Tartax
15-08-2003, 18:40 
 
doch, zeilenumbrüche sind:
chr(13)
und
chr(10)
(wagenrücklauf und runterspulen[noch aus der Schreibmaschinenzeit])
also einfach:
str_replace(chr(13).chr(10),"",$string);

 
MelloPie
15-08-2003, 18:41 
 
da sin schon zeichen \r\n

 
dadidi
15-08-2003, 22:09 
 
ich werde beides mal probieren danke erstmal.

 
TobiaZ
15-08-2003, 22:14 
 
die /n in <br> mit nl2br umewandelt. Leider entstehen dabei immer zusätliche Zeilen. Die erstmal nur im Quellcode zusehen sind, bei abermahliger bearbeitung des Textes im Formularfeld werden es natürlich immer mehr Leerzeilen.

Hmm, das sollte aber schonmal generell nicht der fall sein...

wenn du in das textfeld enters eingibst, dann soll er die auch speichern (denke in db). wunderbar. wenn du sie dann bearbeiten willst, lässt du sie durch nl2br laufen und hast sie wieder richtig in der area drin...

 
dadidi
17-08-2003, 15:43 
 
Das klappt leider nicht.

Wenn ich einen Text habe sieht der so aus:

Im Form-Tag:

"Dies ist ein blind Text ohne Bedeutung.
Hier ist jetzt ein Absatz, was nur einem /n entsprechen sollt."

Im html-, bzw. php-Dokument:

"Dies ist ein blind Text ohne Bedeutung.

Hier ist jetzt ein Absatz, was nur einem /n entsprechen sollt."

nach nl2br:

"Dies ist ein blind Text ohne Bedeutung.<br>

Hier ist jetzt ein Absatz, was nur einem /n entsprechen sollt."

so wird es in die Datei geschreiben. Wenn ich nun zur weiteren Editierung nl2br umkehre macht er das <br> zu /n, die Leerzeile bleibt jedoch.
Wenn man diesen Text jetzt nochmal in ein Formtag lädt. hat man anstatt eines Umbruchs noch eine zusätzlich Leerzeile, die wieder als /n erkannt wird un weider in ein <br> konvertiert wird darunter befindet sich wieder ein Leerzeile usw., bei mehrmaliger bearbeitung des Textes setzt sich die fort sodass es immer mehr werden und zu einem Prblem.

 
TobiaZ
17-08-2003, 16:16 
 
kann dir jetzt gerade nicht so wirklich folgen!

 
dadidi
17-08-2003, 19:37 
 
Naja so sehen die Texte aus. Der Erste ist der Text der im Formular eingegeben wurde. Wenn dieser dann in der Datei gespeichert wird (nur Test halber ohne nl2br) sieht er so aus wie der 2. Text, wenn ich ihn mit nl2br umgewandelt habe sieht er wie der 3. Text aus. Is nur ein Bsp. um dir mal zu zeigen wie die Texte in den einzelnen Phasen aussehen.

Der Text soll jederzeit online editierbar sein, deshalb wird er wenn er wieder geändert wird, wieder in die textarea geladen leider mit den der überflüssigen Leerzeile, die dann auch wieder mitgespeichert wird.

Besser kann ich es nicht erklären, sorry.

 
TobiaZ
17-08-2003, 22:04 
 
Ah, jetzt kann ich dir folgen...

Was mich wundert:

nl2br gibt in den seltensten Fällen "<br>" zürück.

Und auch anderes Verhalten finde ich seltsam.

darf ich mal code+onlineversion sehen?

 
dadidi
18-08-2003, 00:26 
 
Sorry der Code ist leider nicht online, Und ich habe auch momentan dafür keinen webSpace. Und ich glaube ich kann nicht den gesamten Code ins Forum stellen.

 
TobiaZ
18-08-2003, 00:36 
 
Den gesamten Code wollen wir hier auf keinen Fall sehen.

Es reicht die entsprechende Stelle.

BTW: es ist auch möglich Dateien an das Posting anzuhängen.

 
dadidi
18-08-2003, 10:46 
 
O.K. Danke allen für ihre Hilfe.

Die Idee von Tartax funktioniert super. Der Text ist jetzt immer gleich.


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:36 Uhr.