Hallo Zusammen !
Es gibt Dinge die lassen einen nicht los. Nur ein paar Klicks nachdem ich diese Frage ins Forum postete viel mir im WEB.DE-Perl-Forum die Grundlage von einer/em Keita Ito für eine Lösung in die Hände.
Diese hat einen Endlostext mit Zeilenumbrüchen erweitert. Nach ein wenig fummeln läuft es jetzt auch mit absichtlich eingefügten Umbrüchen.
Eins steht für mich, wie schon geschrieben, fest. Weder Netscape noch MSIE können "wrap=physical" richtig verarbeiten! Es gibt scheinbar nur die Möglichkeit den übergebenen Text mit Perl zu bearbeiten um Ihn z.B. formatiert in eine Textdatei zu schreiben.
Als erstes müssen, zu den allgemein bekannten (siehe SELFHTML 7.0), Datenfiltern für CGI-Übergabe noch zwei weitere hinzugefügt werden.
...
$value =~ tr/+/ /;
$value =~ s/%0d/`/gi; # ersetzt Hex 0D durch ASCII 96 (selten gebraucht, aber nachfolgend nicht gefiltert)
$value =~ s/%0a//gi; # löscht Hex 0A
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
...
Dann wird der String noch komplett zerlegt und mit den richtigen Zeilenumbrüchen "\n" wieder zusammengesetzt.
################### Text aufbereiten
$Temp = $Text;
while (length($Temp)>63) # die 63 ist max. Zeilenlänge
{
$Umbruch = rindex ($Temp,"",63); # auf ASCII 96 (also Zeilenumbruch) in der ersten Zeile suchen if ($Umbruch != -1) # wenn Umbruch vorhanden { $Temp =~ s/(.{$Umbruch})
//; # bis Umbruch auschneiden
$Neu .= "\n".$1; # und mit neuem Umbruch "\n" nn $Neu anhängen
}
$Zeile = rindex ($Temp," ",63); # dann Zeilenumbruch nach Wort bearbeiten
$Temp =~ s/(.{$Zeile}) //;
$Neu .= "\n".$1;
}
$Neu .= "\n".$Temp;
$Neu =~s/`/\n/g; # zum Schluß ASCII 96 global gegen "\n" tauschen um auch Leerzeilen mitzunehmen
$Text = $Neu;
Mit "<br>" anstatt des "\n" geht es glaub ich auch mit HTML-Texten. Hab' ich bloß noch nicht versucht.
An einer vielleicht möglichen Verkürzung der Prozedur wäre ich interessiert. Trotzdem hoffe ich einigen qualmenden Köpfen damit wieder etwas Ruhe zu gönnen.
Viel Spaß noch
Thomas