fr@gma: Zeilenumbruch in Textarea

Hallo,

ich muss mich leider nochmal melden, ich stehe immer noch auf dem Schlauch!
Ich bekomme einfach keinen Zeilenumbruch hin.
Ich habe mir mal eine kleine Testdatei gebastelt,
überprüft habe ich im InternetExplorer, Opera und Firefox, immer auf Win-Plattform:

Hier mein Quelltext der Testdatei:

<html>
<head>
</head>

<body>
<form name="form1" method="post" action="">
  <textarea name="tester" cols="70" rows="5" wrap="PHYSICAL" id="tester"></textarea>
  <input type="submit" name="Submit" value="Abschicken">
</form>

<?php
if(isset($tester))
{$array=explode('\r\n',$tester);
echo count($array);
echo nl2br($tester);
}

?>
</body>
</html>

Teststring:
Hier wird momentan etwas getestet und zwar ob endlich mal Umbrüche ausgelesen werden können

Ausgabe
1Hier wird momentan etwas getestet und zwar ob endlich mal Umbrüche ausgelesen werden können

Ich kann mich auf den Kopf stellen, die Maus mit dem Fuß bedienen, beten, betteln - es kommt kein Zeilenumbruch.
Kann mir bitte mal jemand sagen wo mein Fehler liegt?
Bitte, bitte!

  1. Hi,

    {$array=explode('\r\n',$tester);

    Hm, wenn ich mich richtig erinnere, wird hier wegen der einfachen Anführungszeichen an der Zeichenfolge
    Backslash r backslash n
    aufgetrennt, nicht an Carriage Return + Line Feed

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hi Andreas,

      ich habe mit doppelten Anführungszeichen auch kein anderes Ergebnis erhalten. Was is'n eigentlich >> Carriage Return + Line Feed <<

      1. Was is'n eigentlich >> Carriage Return

        Damit wird die ("Cursor-")Position an den Zeilenanfang gesetzt...

        »»+ Line Feed <<
        ...und hiermit in eine neue Zeile. Insgesamt also ein Sprung an die erste Stelle der nächsten Zeile. Das was allgemein als Zeilenumbruch verstanden wird.

        rebus

  2. Tag fr@gma.

    Ich bekomme einfach keinen Zeilenumbruch hin.
    [...]
    $array=explode('\r\n',$tester);

    Ich bin zwar nicht der PHP-Experte, aber abgesehen von MudGuards Hinweis ist noch zu beachten, dass unter verschiedenen Systemen verschiedene Steuerzeichen für Zeilenumbrüche verwendet werden. Um der Sache Herr zu werden, könnte man die Funktion preg_split verwenden:

    $array = preg_split("/(\n|\r|\r\n)/", $tester);

    Alternativ könnte auch die Funktion nl2br weiterhelfen.

    Siechfred

    --
    Zum Testen freigegeben: Siechfreds kleines Weblog
    Wer Fehler findet, bitte an die angegebene E-Mail schicken. Danke.
    1. Tag Siechfred,

      ich habe nochmal mit einem manuellen Zeilenumbruch probiert.
      Richtig muss es heißen:
      $array=explode("\r\n",$tester);

      Aber einen automatischen Zeilenumbruch bekomme ich nicht hin, auch nicht mit nl2br.
      Das Problem liegt irgendwo anders.

      MfG fr@gma

      1. $array=explode("\r\n",$tester);

        Aber einen automatischen Zeilenumbruch bekomme ich nicht hin, auch nicht mit nl2br.
        Das Problem liegt irgendwo anders.

        Dann schau doch mal genau nach, was für Bytes dein Formular liefert

        echo chunk_split(bin2hex('test string'), 2, ' ');

        und wie dann der Zeilenumbruch kodiert ist.

        Diese ASCII-Tabelle kann dir beim Zeichenerkennen behilflich sein.

        1. Hi dedlfix,

          der String:
          Hier wird momentan etwas getestet und zwar ob endlich mal Umbrüche ausgelesen werden können

          sieht so aus:
          48 69 65 72 20 77 69 72 64 20 6d 6f 6d 65 6e 74 61 6e 20 65 74 77 61 73 20 67 65 74 65 73 74 65 74 20 75 6e 64 20 7a 77 61 72 20 6f 62 20 65 6e 64 6c 69 63 68 20 6d 61 6c 20 55 6d 62 72 fc 63 68 65 20 61 75 73 67 65 6c 65 73 65 6e 20 77 65 72 64 65 6e 20 6b f6 6e 6e 65 6e

          die Zwischenräume sind also immer Leerzeichen "20".

          1. der String:
            Hier wird momentan etwas getestet und zwar ob endlich mal Umbrüche ausgelesen werden können

            sieht so aus:
            48 69 65 72 20 77 69 [...]

            die Zwischenräume sind also immer Leerzeichen "20".

            Dein Test funktionierte also richtig. Nur der Browser spielt hier nicht so wie du es wünschst. Hat er bei mir auch erst als ich wrap="hard" gesetzt habe. Da das Umbruchverhalten aber in keinem Standard definiert ist, und wrap proprietär ist, wärst du vielleicht besser dran, dir jetzt nicht hier die Zähne dran auszubeißen, sondern zu versuchen dein Ziel mit anderen Mitteln zu erreichen.

            Ich bin auch aus deinem vorigen Thread nicht schlau geworden. Was genau willst du eigentlich erreichen? Sag jetzt nicht dass du Zeilenumbrüche haben willst, ich will dein Ziel eine Ebene höher wissen. Warum/wofür willst du die haben?

            1. Hi dedlfix;

              Du bist ein Engelchen!!!!!!!!!!!!!!!!!!!!!
              Mit wrap="hard" funktioniert es. WOW!

              Mein Problem ist, aus den Daten des Textfeld wird ein PDF-Dokument erstellt (mit FPDF). Da mehrere Einträge verwendet werden, benötige ich für das PDF-Dokument die genauen Koordinaten.
              Ich hoffe es war so einigermaßen verständlich.

              Beispiel:

              Veranstaltung 1                 Datum: 20-01-2005   Beginn: 19 Uhr
              Gebäude Testgebäude
              Motto "Testveranstaltung 1

              Veranstaltung 2                 Datum: 20-01-2005   Beginn: 19 Uhr
              Gebäude Testgebäude
              Motto "Testveranstaltung 2

              Damit sich Eintrag 1 und Eintrag 2 nicht überlagern, benötige ich im PDF-Dokument irgendwoher die Koordinaten für den zweiten Textblock.
              Deshalb muss ich zuverlässig die verwendeten Zeilen auslesen.
              Vielen Dank nochmal!

              1. Beispiel:

                Das sieht doch aus wie eine Tabelle, kann man da nicht was tabellarisches machen?

                Aber außer dieser Idee kann ich dir nicht viel weiter helfen.

                Ich hab nur mal ganz kurz und beispielhaft eine Umsetzung von XML-Daten in tabellarische Form mit XSLT über FOP (erfolgreich) und über LaTeX (weniger erfolgreich, mangels Wissen) in PDF implementiert. Das ist jedoch wegen der mehrfachen Umwandlung etwas aufwändig gewesen, hatte jedoch den Vorteil durch einfaches Austauschen des XSLs flexibel zu sein. Du wirst diesen komplizierten Weg sicher nicht so gebrauchen können...

      2. Hi,

        Aber einen automatischen Zeilenumbruch bekomme ich nicht hin, auch nicht mit nl2br.

        Was meinst Du mit "automatischen Zeilenumbruch"?
        Hat das etwa was mit dem 'wrap="PHYSICAL"' zu tun?
        Da dieses Attribut in HTML nicht existiert, kannst Du nicht davon ausgehen, daß es irgendwelche Auswirkungen haben könnte.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hi Andreas,

          Ich bin schon davon ausgegangen, dass man mit 'wrap="PHYSICAL"' einen automatischen Zeilenumbruch hinbekommt, laut HtmL-Erklärung ist das im Internet-Explorer möglich. (ist zwar ohne Gewähr, aber trotzdem muss man doch einen Zeilenumbruch hinbekommen?!).

          http://de.selfhtml.org/html/formulare/eingabe.htm#bereiche_umbruch/