Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Texte formatiert ausgeben [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Texte formatiert ausgeben


 
Schoppy
22-07-2002, 20:52 
 
Hallo zusammen...

ich habe ein kleines Problem mit der Ausgabe von Texten aus meiner Tabelle...wenn ich die Daten auf meiner HTML-Seite formatiert ausgeben möchte (sprich..mit Zeilenumbrüchen und Absätzen) dann muß ich entsprechende HTML-Tags zusammen mit dem Text an entsprechender Stelle in der Datenbank speichern. Gibt es eine Methode um Text per so formatiert aus der Tabelle auszugeben, wie man sie eingtragen hat. ?

 
Caine
22-07-2002, 21:11 
 
echo "anfang formatierung";
auslesen aus der tabelle
echo "endung der formatierung";

in die echos setzte einfach die html-tags der benötigten formatierung....

 
Schoppy
22-07-2002, 21:17 
 
Hmm...gut...aber so kann ich aber z.B keine Leerzeilen oder Zeilenumbrüche im Ausgabetext realisieren.

 
kapitaeniglo
23-07-2002, 00:54 
 
jepp natuerlich gibt es da eine moeglichkeit.
leerzeichen und zeilenumbruechen lassen sich leicht realisieren.

ich nehme mal an das du die daten in einem formular eingibst.
um nun die zeilenumbrueche zu realiseieren muss du im formular einfach ENTER druecken.
bevor es in die datenbankgeschrieben wird musst du dann folgendes machen:

$message = ereg_replace("\n", "<br>", $message);

dabei ist $message der text bei dem die zeilenumbrueche gemacht werden.
fuer ne leerzeile gibt es da auch eine variante, aber die faellt mir grade nicht ein, zur not kannste das auch so lassen, da macht er dann halt 2 br-tags was das gleiche ergebnis bringt aber nicht wirklich korrekt ist.


und gleich noch nen paar tips die damit zusammenhaengen, hier um allte html-tags zu entfernen (muss natuerlich vor der anderen anweisung stehen da du sonst deine zeilenumbrueche wieder schoen enfernst.

strip_tags($message,"");

dies ist sehr nuetzlich um seine Skript vor DAUs oder leuten die sie zum absturz bringen wollen zu sichern. du musst nur dann andere erlaubte html-befehlte entweder in die anfuehrungsstriche einsetzen oderf besser noch diese per UBB-CODE realisieren (wie hier im forum) dies wandelst du dann am besten mit PCRE um . So ich hoffe ich konnte helfen

mfg
armin


p.s. : falls du dich fragst wie ein anwender dein skript zerschiessen kann. einfach nen <table> tag oeffnen und nicht schliessen ! oder andere die mit tabellen zu tun haben, das kann sehr leicht dein design zerschiessen !



falls du dazu noch fragen hast kannst mir ne kurznachricht schicken !

 
TobiaZ
24-07-2002, 01:13 
 
sieh mal unter nl2br() nach.

Ich glab das ist was du suchst.

 
kapitaeniglo
24-07-2002, 10:57 
 
stimmt. hatte ich ganz vergessen das es dazu auch ne funktion gibt *erroet*

 
Schoppy
24-07-2002, 12:17 
 
Ja danke..damit habt Ihr mir echt geholfen

 
TobiaZ
24-07-2002, 12:21 
 
np

 
Iron_Rob
21-05-2003, 12:42 
 
ich schreibe ma einfach hier rein, weil ich denke das das dazu passt und wenn ich wieder nen neuen thread oeffne dann werd ich erschossen...

also die funktion nl2br() is ja echt sehr hilfreich... nur gibt es eine "gegenfunktion"
also das die BR tags wieder in Zeilenumbrueche umgewandelt werden?

ich habs so probiert:
$text = str_replace("<br />","\r",$text);
bzw.
$text = str_replace("<br />","\n",$text);

oder mit beiden...
das problem ist, das beim rueckgabe wert jeweils da wo \r oder \n zum einsatz kommen immer ein Zeilenumbruch zuviel ist...
wenn ich beide einsetze, dass sinds zwei zuviel... also irgendwie geibt mir der befehl \n oder \r immer zwei zeilenumbrueche aus!

 
schmalle
21-05-2003, 12:53 
 
öhm, nl2br() musst du ja nicht speichermn. also text aus DB holen, und dann mit nl2br() ausgeben. wozu willst du es dann rückgängig machen? in der DB steht ja noch das "original" ...

 
Iron_Rob
21-05-2003, 13:03 
 
ja richtig!
Danke fuer den Denkanstoss... aber dennoch ist das nicht seltsam das immer wenn ich irgendwo \n reinschreibe mir letztendlich immer zwei zeilenumbrueche ausgegeben werden?

Ich meine was ist wenn ich irgendwann, was bestimmt bald sein wird, genau einen zeilenumbruch brauche?

 
wahsaga
21-05-2003, 13:53 
 
Original geschrieben von Iron_Rob
aber dennoch ist das nicht seltsam das immer wenn ich irgendwo \n reinschreibe mir letztendlich immer zwei zeilenumbrueche ausgegeben werden?

Ich meine was ist wenn ich irgendwann, was bestimmt bald sein wird, genau einen zeilenumbruch brauche?
nein, das ist nicht seltsam.

nl2br() wandelt die zeilenumbrüche nicht in <br /> um, sondern fügt <br /> hinzu.

wenn du in deinen quelltext siehst, hast du nach umwandlung eines textes
test-text mit
zeilenumbruch
mit nl2br()
test-text mit<br />
zeilenumbruch
dort stehen.


zum zurück-"wandeln" müsstest du also die <br /> nicht durch zeilenumbrüche, sondern durch einen einfachen leerstring "" ersetzen.

 
skaven
26-01-2004, 12:49 
 
Moin Moin,

ich hab ebenfalls ein kleines Problem mit der Ausgabe eines Datenbankfeldes. Vielleicht weiß einer Rat.
Also: in einem Datenbankfeld steht eine Adresse in folgender Form

Herr
Tim Taylor
Seitengasse 12

12345 xxxx

Wie man sieht sind dort Zeilenumbrüche enthalten.
Lese ich dieses Datenfeld aus mit

SELECT adresse FROM tab1

und ersetze die Breaks mit

str_replace("\r", "<br />", $var)

und gebe das Ergebnis aus, so wird mir auch eine korrekte Ausgabe in HTML angezeigt.
So weit so gut. Erweitere ich jedoch mein SQL-Statement mit

WHERE id='$id'

funzt es nich mehr.
Die Zeilenumbrüche sind verschwunden.

Für Ratschläge und Hilfe wär ich dankbar

 
wahsaga
26-01-2004, 12:51 
 
Original geschrieben von skaven
Erweitere ich jedoch mein SQL-Statement mit
WHERE id='$id'
funzt es nich mehr.
Die Zeilenumbrüche sind verschwunden.
das kann nun aber beim besten willen nicht an der WHERE-klausel liegen.
der fehler muss woanders liegen.

 
schmalle
26-01-2004, 12:58 
 
und mal nur so am rande. das: str_replace("\r", "<br />", $var)
ist nix gut. die armen linux user haben nämlich \n als zeilenumbruch. \r ist eigentlich mac windoof macht \r\n

 
skaven
26-01-2004, 13:02 
 
Danke für die schnelle Antwort.

Mich wundert es ja ebenfalls, dass der Zeilenumbruch verschwindet sobald ich die WHERE- clause ranhänge.

Aber interessanter Weise tritt dieses Phänomen auch bei phpMyAdmin 2.5.1 auf. Wenn ich einen Eintrag teilweise Anzeigen lasse, sind die Zeilenumbrüche ebenfalls verschwunden und der Datenfeldinhalt wird in einer Zeile ausgegeben.

Vielleicht sollte ich aber noch dazu erwähnen, das es sich um importierte Daten einer DB2 handelt.

 
TobiaZ
26-01-2004, 13:03 
 
hmm, hast du sicher immer die selben datensätze verglichen???

Wie wahsaga schon sagte, am WHERE kanns nicht liegen!

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:13 Uhr.