Stefanie Alsdorf: Wie kann ich eine Textarea-Eingabe korrekt ausgeben?

Hallo Ihr!

Von einem Freund hab ich die Adresse von diesem Forum und ich hoffe, dass Ihr mir auch weiterhelfen könnt. Aber bei den vielen Fragen und den vielen Antworten bin ich guter Hoffnung.

Ich bin auch dabei PHP zu lernen und bei meinen Praxisübungen bin ich auf ein Problem gestossen.
Ich habe den Benutzer in einem Textarea-Feld beliebigen Text eingeben lassen.
Dieser Text wurde einem PHP-Script übergeben und soll ausgegeben werden.
Zur Zeit löse ich das so, indem ich den übergebenen Text wieder in ein Textarea-Feld mit "Readonly" einsetze. Aber das gefällt mir gar nicht.
Zum Einen wäre ich gerne, was den Stil betrifft etwas freier und zum Anderen möchte ich im nächsten Schritt bestimmte HTML-Elemente (Links und Bilder) erlauben können. Das geht ja in einem Textareafeld nicht.

Kann mir jemand sagen, wie ich den eingegebenen Text auch als Text ausgeben kann, ohne die Formatierung (Absätze, mehrere Leerzeichen hinterneinander, ...) zu verlieren?
Wie kann ich dann verhindern, dass HTML-Befehle interpretiert werden?

Mir schwebt dann vor, dass ich (ähnlich wie hier) mit link:Adresse und bild:Name die Links erzeuge und die Grafiken als Link anklickbar mache. Dafür brauche ich bestimmt diese "Regular Expressions", oder?
Wie mache ich ein Suchen und Ersetzen über den gesamten Text, wenn ich die Adresse/Name nicht kenne. Ich weiss halt nur, dass nach einem anschliessenden Leerzeichen Schluss ist.

Oh, das sind jetzt zwei Fragen auf einmal. Aber Ihr könnt mir helfen oder?

Eure Steffi

  1. Hi,

    Von einem Freund hab ich die Adresse von diesem Forum und ich
    hoffe, dass Ihr mir auch weiterhelfen könnt. Aber bei den vielen
    Fragen und den vielen Antworten bin ich guter Hoffnung.

    ,) Und wieder eine mehr ,)

    Kann mir jemand sagen, wie ich den eingegebenen Text auch als
    Text ausgeben kann, ohne die Formatierung (Absätze, mehrere
    Leerzeichen hinterneinander, ...) zu verlieren?

    $textarea = nl2br($textarea);
    $textarea = ereg_replace(" +"," ",$textarea)

    Wie kann ich dann verhindern, dass HTML-Befehle interpretiert
    werden?

    $textarea = ereg_replace("<","<",$textarea);
    $textarea = ereg_replace(">",">",$textarea);

    Mir schwebt dann vor, dass ich (ähnlich wie hier) mit
    link:Adresse und bild:Name die Links erzeuge und die Grafiken als
    Link anklickbar mache.

    $textarea = ereg("<#>",$texarea,$regs);
    for($i=1;$i<count($regs);$i++)
    {
    $textarea = ereg_replace("<#>."]","<a href=".$regs[$i].">".$regs[$i]."</a>",$textarea);
    }

    mfg
    CK1

    1. Hi,

      uups ,) es muß natürlich

      $textarea = ereg("\link:(.*)\",$texarea,$regs);
      for($i=1;$i<count($regs);$i++)

      »»  {
      »»  $textarea = ereg_replace("\link:".$regs[$i]."\","<a href=".$regs[$i].">".$regs[$i]."</a>",$textarea);

      heißen - die * bitte durch [ und ] ersetzen ,)

      mfg
      CK1

      1. Hallo Christan (CK1)!

        Ich bin echt begeistert, wie schnell das geht hier.
        Und staune über das Wissen, denn selbst angenommen, meine Frage wurde direkt nach Abschicken gelesen, ist so eine ausführliche Antwort in der kurzen Zeit wirklich zur zu Bestaunen.

        Hoffentlich werde ich auch irgendwann einmal so gut sein, um anderen helfen zu können. Das würde mir echt Spaß machen.
        *träum*

        Vielen lieben Dank, Christian!

        Steffi

        1. Hi,

          bei so einer Antwort ist man doch gleich wieder motiviert, Fragen
          zu beantworten ,)

          Danke, Steffi, hast mir den Tag gerettet ,)

          mfg
          CK1

    2. hi ho Christian

      $textarea = ereg_replace("<","<",$textarea);
      $textarea = ereg_replace(">",">",$textarea);

      *kicher* das wurde natuerlich im Forumsskript noch nicht geaendert :-)
      es soll wohl

      $textarea = ereg_replace("<","<",$textarea);
      $textarea = ereg_replace(">","&ampgt;",$textarea);

      heissen .-))

      an Steffi: um solche Probleme zu umgehen, brauchst du nur (als erstes!)
      $textarea = ereg_replace("&","&",$textarea);

      (maskierung des &-Zeichens )
      einzufuegen :-)

      cua

      n.d.p.

      1. nochmal...

        $textarea = ereg_replace(">",">",$textarea);

        mist, semikolon bei dem ganzen ge-ampe vergessen,
        das seht ihr, dass das in diesem Forum nicht gemacht wird *g*

        cua

        n.d.p.

  2. Hallo Stefanie,

    nachdem Christian ja schon alles gesagt hat, hier nur eine kurze
    Anmerkung: Wenn Du den Text ausliest, solltest Du auch die "" und
    die '' ersetzen lassen, den PHP maskiert diese Zeichen zu " und '

    also entsprechend:

    $textarea = str_replace('"',""",str_replace("'","'",$textarea));

    (hier sind zwei Befehle verschachtelt, Du kannst es auch so schreiben:

    $textarea = str_replace("'","'",$textarea);
    $textarea = str_replace('"',""",$textarea);

    Die funnktion nl2br (ein PHP-eigener Befehl) ist nicht ganz schlecht,
    ich persönlich halte es so aber für besser:

    $textarea = str_replace("\n","<br>",str_replace("\r","",$textarea));

    (oder auch hier un-verschachtelt:

    $textarea = str_replace("\n","<br>",$textarea);
    $textarea = str_replace("\r","",$textarea);

    An sonsten noch der Hinweis auf http://www.php3-forum.de, einem
    ganz guten Manuel zu PHP3 mit Beispielen (wenngleich alles leider
    nicht ganz so "mundgerecht" aufbereitet wurde wie in SELFHTML :-)

    Viel Erfolg & schönes Wochenende

    <img src="http://home.germany.net/100-80215/alex/images/promo/signet.gif" alt="">

    <img src="http://home.germany.net/100-80215/alex/images/promo/akonline.gif" alt="">

    http://www.atomic-eggs.com/selfspezial/daten/101.html

    1. Hallo Stefanie,

      hups, das kommt davon, wenn man nicht richtig maskiert:

      Es muss folgendermassen heissen:

      $textarea = str_replace('"',"&quot ;",str_replace("'","'",$textarea));
                                         ^dieses Leerzeichen löschen :-)

      und die un-verschachtelte Version:

      $textarea = str_replace("'","'",$textarea);
      $textarea = str_replace('"',"&quot ;",$textarea);
                                         ^dieses Leerzeichen löschen :-)

      <img src="http://home.germany.net/100-80215/alex/images/promo/signet.gif" alt="">

      <img src="http://home.germany.net/100-80215/alex/images/promo/akonline.gif" alt="">

      http://www.atomic-eggs.com/selfspezial/daten/101.html

    2. Hallo Stefanie,

      aller guten Dinge sind drei - und ich zu doof :-(

      $textarea = str_replace('"',"&qout;",str_replace("'","'",$textarea));

      unverschachtelt:

      $textarea = str_replace("'","'",$textarea);
      $textarea = str_replace('"',"&qout;",$textarea);

      Das ist fast wie bei "1, 2 oder 3", wo es auch immer hies:
      "Ob ihr wirklich richtig steht, seht ihr, wenn das Licht angeht".

      Hier weiss man immer erst, ob man richtig maskiert hat, wenn man
      die Bestätigung bekommt; dann ist der Eintrag aber schon auf dem
      Server... sorry :-))

      <img src="http://home.germany.net/100-80215/alex/images/promo/signet.gif" alt="">

      <img src="http://home.germany.net/100-80215/alex/images/promo/akonline.gif" alt="">

      http://www.atomic-eggs.com/selfspezial/daten/101.html

      1. Hallo Stefanie,

        es heisst natürlich """ und nicht "&qout;"...

        und demnach - jetzt hoffentlich endlich richtig:

        $textarea = str_replace('"',""",str_replace("'","'",$textarea));

        und unverschachtelt:

        $textarea = str_replace("'","'",$textarea);
        $textarea = str_replace('"',""",$textarea);

        Ganz ehrlich: Ich wollte Dich wirklich _nicht_ verwirren
        *verwirrtguck* <fg>

        <img src="http://home.germany.net/100-80215/alex/images/promo/signet.gif" alt="">

        <img src="http://home.germany.net/100-80215/alex/images/promo/akonline.gif" alt="">

        http://www.atomic-eggs.com/selfspezial/daten/101.html

        1. Hallo Alexander!

          Wow! Hätte ich nicht gedacht. Meine erste Frage (oder: Posting *hihi*) und soviele Antworten.
          Wenn auch ein bisschen verwirrend (wen mein ich nur *g*).
          Hab mir erstmal alles ausdrucken müssen. (Blöd, dass immer zwei Seiten gedruckt werden)

          Ich wünsch Euch allen ein schönes Wochenende, Ihr lieben.

          Eure Steffi