Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

mehrzeiliges eingabefeld wiedergeben





Frage

hallo ich habe ein mehrzeiliges formular eingabefeld, was auf einer nächsten seite (über html) angezeigt werden soll. wenn ich einen zeilenabsatz mache wird dieser nicht übernommen, da der absatz den ich im formular mache ein[code] \n [/code]absatz ist, ich jedoch für html einen [code]<br>[/code] brauche. wie kann ichs machen, das bei der verarbeitung der br eingefügt wird? luke

Antwort 1 von rabies

http://php.net/manual/function.nl2br.php ... selbsterklärend, wie ich finde.

Antwort 2 von luke

vielen dank, das habe ich gesucht ;)

Antwort 3 von luke

ich bins nochmal...so ganz von alleine erklärt sich das nicht....

also
zufälliger weise wird mein text auch in der variable
Zitat:
text
gespeichert.

jetzt habe ich

<?php
function nl2brr($text) {
return str_replace(array("rn", "n", "r"), "<br>", $text);
} ?>


und weiter unten

<?php
echo "$text";
?>

jetzt wird aber alles dargestellt wie zuvor ohne br :(
was mache ich falsch??

luke

Antwort 4 von disco

moin

naja. du gibst ja auch nur $text aus. ohne es vorher an die funktion nl2brr() zu übergeben.

g,
disco

Antwort 5 von luke

wie geht das?
sry
bin totaler neuling auf dem gebiet, aber jeder fängt mal klein an ;)

Antwort 6 von Termu

Die Funktion von "emailfire" enthält mehrere Schreib- und Programmierfehler! Mach es einfach so:
echo str_replace(chr(10),chr(10)."<br>",$text);

Antwort 7 von luke

danke termu
habs mal so eingefügt wie du gesagt hast, jetzt zeigt der server für diese zeile einen fehler an:

Zitat:
Parse error: parse error, unexpected ´>´


wobei das
>
ja erforderlich ist...

Antwort 8 von Termu

Also mein PHP beschwert sich bei der Zeile nicht. ;-) Vielleicht hast Du dich verschrieben? Vielleicht das Anführungszeichen vor <br> vergessen?

Antwort 9 von luke

habs 1:1 kopiert*g*

Antwort 10 von Termu

Dann hast Du vielleicht in einer vorhergehenden Zeile vergessen eine Zeichenkette per Anführungszeichen zu schliessen? Oder einen anderen Fehler gemacht, der sich über mehrere Zeilen hinweg auswirkt? Sowas passiert bei PHP gerne mal ..
Kopier die Zeile doch mal in ein leeres Skript. So kannst Du prüfen ob der Fehler wirklich in dieser Zeile liegt.

Antwort 11 von luke

kannst du mir mal eine email schicken?
dann schicke ich dir die datei mal zurück und du kannst mir sagen, wo der fehler liegt ;)
meine adresse lautet

fade-away at gmx.net

Antwort 12 von Termu

Kannst Du den Code nicht hier posten? Oder ihn irgendwo als Textdatei auf Webspace uppen. Oder bei nem Filesharedienst wie z.B. rapidshare.de

Antwort 13 von luke

hi
habs mal online gestellt...
die variablen werden aus einem formular übergeben, was ich jetzt nicht online gestelt habe.
http://web1.v300.ncsrv.de/sn/php.txt

Antwort 14 von Termu

Ein wenig unübersichtlich Dein Code. ;-) Das ganze Skript besteht ja fast nur aus einem ewiglangen echo-Befehl.

echo "....
....
....
....
....
<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td>".str_replace(chr(10),chr(10)."<br>",$text)."\n
<br> \n
<br>\n
<br> \n
<br>\n
$salutation
<br>\n
<br>\n
<br>\n

</td>
</tr>
</table>
</body>
</html>
";

So ungefähr müsste das in Deinem Stil aussehen. Der Aufruf von str_replace() muss aus der Zeichenkette raus und wird mit Punkten zwischen die vorherige und die nachfolgende Zeichenkette eingefügt.

Antwort 15 von luke

vielen dank.....
es klappt jetzt :)

habs soweit auch verstanden ;)
die funktion muss rausgenommen werden, da sie nicht direkt in den echo befehl gehört, nicht wahr?

Antwort 16 von Termu

Ja das ist richtig. Bei so viel festem HTML-Code und nur wenig PHP würde ich das aber eher so machen:

<?php include("config.php");?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
....
....
<tr>
<td>
<?php
echo str_replace(chr(10),chr(10)."<br>",$text);
?>
<br> \n
<br>\n
<br> \n
<br>\n
<?php echo $salutation; ?>
<br>\n
<br>\n
<br>\n

</td>
</tr>
</table>
</body>
</html>

Denn alles was nicht durch <?php ?> eingeschlossen wird, gibt PHP einfach so unverändert in den Output. Du kannst ausserhalb davon also direkt HTML-Code schreiben. So ersparst Du Dir auch die vielen mit Backslash maskierten Anführungszeichen. Und ich finde es wird auch übersichtlicher.

Antwort 17 von Termu

Ähhhm die ganzen "\n" musst Du Dir noch wegdenken. Hab ich vergessen zu löschen. ;-)

Antwort 18 von luke

okay, danke, werde es beherzigen ;)
das mit den anführungszeichen auskommentieren, hat jedoch mein editor für micg gemacht, deshalb wars schnell gemacht ;)