Problem bei Zeilenumbrüche entfernen
3gx
- php
0 muh0 3gx
0 Sönke Tesch0 3gx
Hallo,
also ich übergebe Text aus einem <textarea>-Feld an ein PHP-Skript,
überprüft die Eingabe auf unerwünschte Zeichen und übergibt die Eingabe via virtual('datei.pl?TEXTalsAnhang) ein ein PErl-Skript. Das Perl Skript schreibt nun den Text endgültig in eine Textdatei.
So, alles soweit wunderbar. Nur mache ich in dem Textfeld eine Eingabe mit Zeilenumbrüchen, so werden auch diese Zeilenumbrüche am Ende in die Text-Datei geschrieben. Dieses ist aber NICHT erwünscht.
Ich habe schon einiges probiert um die Zeilenumbrüche zu eliminieren, aber es klappt einfach nicht :(
z.B. folgendes funktionierte nicht:
HTML:
im PHPSkript:
im PErl-Skript:
...usw.
Woran kann das liegen? ...Wenn ich diese Textdatei in einen Hexeditor lade, dann sind an dieser Stelle, wo der Zeilenumbruch aus dem <textarea>-Feld ist, 2 Zeichen (hintereinander) mit dem Dezimal-Wert 10 (1. Zeichen) und 32 (2. Zeichen). Sollte da nicht 10 und 13 stehen? Ist es möglich, dass "10 32" Mac-Format ist (könnte durch meinen Texteditor kommen (Proton 3.0)? Wenn ja, wie kann ich das dann im Skript löschen?
Danke
hoi,
jo das liegt daran das chop() das letzte zeichen entfernt nich alle "\n" und trim() nur am ende und anfang "\n" etc. entfernt...
um alle "\n" zu entfernen könntest du das nehmen:
str_replace("\n", "", $variable);
str_replace("\n", "", $variable);
Hmmm, das habe auchschon versucht mit ereg_replace(),
aber geholfen hat's nicht. Ist da ein grundlegender Unterschied zwischen str_replace() und ereg_replace()?
So, alles soweit wunderbar. Nur mache ich in dem Textfeld eine Eingabe mit Zeilenumbrüchen, so werden auch diese Zeilenumbrüche am Ende in die Text-Datei geschrieben. Dieses ist aber NICHT erwünscht.
HTML:
- "wrap=virtual"/"wrap=soft" in <textarea>-Element
Sowieso nicht.
im PHPSkript:
- chop()
- trim()
chop() und trim() entfernen, wie bereits geschrieben, nur die Leerzeichen an den Enden einer Variablen, nicht mittendrin.
- "\n" bzw. "\r\n" entfernen
Wie? str_replace() oder strtr() sind Deine Freunde, und preg_replace("/[\r\n]{1,2}/"," ",$text) mag Dich wahrscheinlich besonders gern.
Woran kann das liegen? ...Wenn ich diese Textdatei in einen Hexeditor lade, dann sind an dieser Stelle, wo der Zeilenumbruch aus dem <textarea>-Feld ist, 2 Zeichen (hintereinander) mit dem Dezimal-Wert 10 (1. Zeichen) und 32 (2. Zeichen). Sollte da nicht 10 und 13 stehen? Ist es möglich, dass "10 32" Mac-Format ist
Nein, 13 und 10 (\r\n) bei Windows, 13 (\r) beim Mac und 10 (\n) bei den meisten anderen Systemen. 32 ist das Leerzeichen.
Gruß,
soenk.e
Hm ja,
an preg_replace() hab ich garnicht gedacht.
Habe auch was bei im Netz(1) gefunden, eine Routine, die noch diverse andere Sachen entfernt.
(1) [url:http://www.php.net/manual/de/function.preg-replace.php]