Rolf Rost: Zeilenumbruch in Textarea-Feld

Hallo,

ich möchte über ein Formular, welches mehrere einzeilige Eingabefelder und ein mehrzeiliges Eingabefeld (textarea) enthält, eine Druckvorlage im Browser zeigen, die fix und fertig formatiert ist und wo der im Formular eingegebene Text an der richtigen Stelle erscheint. Beim Klicken auf den im Formular gezeigten Button "Fertigstellen" wird auf dem Server ein Perlscript gestartet, welches die gefüllte Druckvorlage im Browser zeigt. Das klappt soweit, sogut ganz prima. Die Formulardaten werden mit "method=post" übergeben und den Quelltext habe ich weitestgehend aus "selfhtml / perl" übernommen, hier ein Auszug:

#Formularfelder auslesen
@Formularfelder = split(/&/, $Daten);
$i = 0;
foreach $Feld (@Formularfelder)  
{
  ($name, $value) = split(/=/, $Feld);  
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s/<!--(.|\n)*-->//g;
  $Formular{$value} = $value;
  $list[$i] = $Formular{$value};
  $i++;
}

Der Text aus den Formularfeldern steht nach dieser Schleife in @list[0], @list[1] usw. und das Perlscript erzeugt über den print - Befehl eine temporäre HTML Seite wo diese Daten an der richtigen Stelle eingesetzt sind.

Das Problem ist: wie bekomme ich die Zeilenumbrüche aus dem Textarea-Feld mit 'rüber in die HTML-Seite?

Rolf Rost

  1. Hallo Rolf,

    Das Problem ist: wie bekomme ich die Zeilenumbrüche aus dem Textarea-Feld mit 'rüber in die HTML-Seite?

    Im HTML-Formular sollte stehen:
    <textarea wrap=physical>

    Dann sollte der Browser, so er die Angabe denn kennt, die Zeilenumbrueche mit uebertragen.

    Im Perl-Script kannst Du dann vor der Zeile:
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    mal folgende Zeile probieren:
    $value =~ s/%0D/<br>/eg;

    Ich weiss jetzt nicht, ob das klappt, aber %0D sollte das www-url-codierte Zeichen fuer Zeilenumbruch sein, falls der Browser wrap=physical versteht und das entsprechende Steuerzeichen mit uebertraegt. In der obigen Zeile verwandelst Du das Zeilenumbruchzeichen einfach in sein HTML-Pendant um. Fix und fertig also fuer die HTML-formatierte Ausgabe...

    Ich hab das allerdings nicht ausprobiert. Falls es jemand besser weiss, bitte ich um Korrektur...

    Viele Gruesse
       Stefan Muenz

    1. Hallo Stefan,
      vielen Dank für Deinen Lösungsvorschlag.
      Herzliche Grüße aus Erfurt
      Rolf Rost