Wie kann ich eine Textarea-Eingabe korrekt ausgeben?
Stefanie Alsdorf
- php
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
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
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
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
Hi,
bei so einer Antwort ist man doch gleich wieder motiviert, Fragen
zu beantworten ,)
Danke, Steffi, hast mir den Tag gerettet ,)
mfg
CK1
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(">","&gt;",$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.
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.
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="">
Hallo Stefanie,
hups, das kommt davon, wenn man nicht richtig maskiert:
Es muss folgendermassen heissen:
$textarea = str_replace('"',"" ;",str_replace("'","'",$textarea));
^dieses Leerzeichen löschen :-)
und die un-verschachtelte Version:
$textarea = str_replace("'","'",$textarea);
$textarea = str_replace('"',"" ;",$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="">
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="">
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="">
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