Avatar billede pede15 Nybegynder
19. august 2003 - 19:15 Der er 19 kommentarer og
1 løsning

Bevare linjeskift i tekst ved indsættelse i DB, uden andet HTML

Jeg har to variabler, henholdsvis $news_title og $news_content.

Det jeg ønsker er at bevare de linjeskift som brugeren evt. har lavet, men samtidig også filtrere HTML koder fra. Men jeg går ud fra at man jo skal bruge "<br>", så den skal jo helst ikke smides ud - men alt andet.

Jeg har brugt noget kode fra PHP-referencen...og det virker også, men ja, den fjerner også "<br>"-tags.. Så det hjælper jo ikke rigtigt noget.

Nogen som har svaret?....undskyld... Hvem har svaret? ;)
Avatar billede fangel Nybegynder
19. august 2003 - 19:15 #1
$streng = nl2br($streng);

Morten
Avatar billede fangel Nybegynder
19. august 2003 - 19:17 #2
nl2br laver "linieskift" (\n) om til <br>, derfor kan du bare lave normale linieskift

du kan også bruge strip_tags() da denne kan "undlade" nogle tags - læs manualen for dette

Morten
Avatar billede pede15 Nybegynder
19. august 2003 - 19:17 #3
dea_pg>> eh, tja.. den laver så kun \n om til <br>... jeg skal have fjernet alle andre HTML tages, end lige <br> - hvis jeg skal bruge nl2br();  - måske er det den vej man skal gå??
Avatar billede pede15 Nybegynder
19. august 2003 - 19:18 #4
dea_pg>> undskyld ;) - var lidt for hurtig der ;) prøver det lige!
Avatar billede pede15 Nybegynder
19. august 2003 - 19:22 #5
string strip_tags (string str [, string allowable_tags])

"It errors on the side of caution in case of incomplete or bogus tags"

- det er da ikke så fedt...vel?
Avatar billede fangel Nybegynder
19. august 2003 - 19:33 #6
altså

$str = "hej <br> og så er <b>dette</b> må<i>ske</i> sjovt at <br>se <b>på</b>";
echo strip_tags($str, "<br>");

Morten
Avatar billede tipsen Nybegynder
19. august 2003 - 20:03 #7
Hvordan modtages data fra bruger?
Avatar billede pede15 Nybegynder
19. august 2003 - 21:21 #8
Brugeren indtaster dataene i et textarea. - Er det det du mener tipsen ?
Avatar billede tipsen Nybegynder
19. august 2003 - 21:38 #9
så gemmer du bare dataene ganske almindeligt og fjerner alle html-tags som tidligere og når du udskriver dataene bruger du blot echo nl2br($data);

For god ordens skyld skal det så lige nævnes, at nl2br() indsætter <br /> ved hvert linieskift - den erstatter ikke linieskiftet som skrevet ovenfor.
Avatar billede pede15 Nybegynder
19. august 2003 - 22:55 #10
Du er fandme guld tipsen! ;)  - det virker ( P.S.: man kan også nl2br() før man indsætter dataene..men..det er jo i princippet ligemeget.. ) men...det virker nu!  - læg et svar og få dine point ;)
Avatar billede tipsen Nybegynder
19. august 2003 - 23:49 #11
hvis du bruger nl2br() inden du indsætter i db, slipper du for at bruge den efterfølgende (mange gange), men får i stedet ekstra html-kode ind i din tekst - og det kan jo være du vil kunne redigere denne tekst senere hen - og så er det nemmere, hvis der ikke er smidt ekstra html-kode ind.
Avatar billede pede15 Nybegynder
20. august 2003 - 10:30 #12
nå ja, det havde jeg ikke lige tænkt på ;) - well - det funger - så læg et svar ;)
Avatar billede tipsen Nybegynder
20. august 2003 - 10:34 #13
*svar*
Avatar billede pede15 Nybegynder
20. august 2003 - 14:22 #14
there ;)
Avatar billede fangel Nybegynder
20. august 2003 - 17:28 #15
hvad var forskellen på tipsens og mit svar?

Morten
Avatar billede pede15 Nybegynder
20. august 2003 - 17:57 #16
Well, for det først er der en "warning" ved funktionen 'strip_tags()', hvilket jeg ikke finder videre positivt. Og derudover så var tipsens svar det er gjorde at jeg fik løst mit problem. Derfor fik han pointene. Håber du forstår ;o).
Avatar billede fangel Nybegynder
20. august 2003 - 18:03 #17
nl2br er faktisk mit første svar - så ud over "dokumentationen" er der ingen forskel mellem - samme funktioner bliver behandlet!

:resume:

1) når data modtages fra form, fjernes html-tags med enten

$str = strip_tags($str); // fjerner
eller
$str = htmlenteties($str); // "ussadeligører" - usikker på stavemåde

2) dataene ligges i database

3) når man så viser dataene igen, gører man den lige igennem

$str = nl2br($str);

for at indsætte et linebreak (<br />) ved hvert linieskift (\n) - derved bliver data vidst med orig. linieskift!

(resume er til hvis andre folk skulle falde over spørgsmål i søgning efter et svar)

Morten
Avatar billede pede15 Nybegynder
20. august 2003 - 22:36 #18
dea_pg>> Det er rigtigt det du siger. Men tipsen var altså bare på pletten, og jeg fik det til at virke ud fra hans beskrivelse/hjælp/vejledning. Derfor fik han pointene. Kort sagt: det var tipsens skyld at jeg fik mit script til at fungerer efter hensigten.
Avatar billede pede15 Nybegynder
20. august 2003 - 22:36 #19
dea_pg>> Håber ikke der er nogen dårlig "atmosfære".. ;)
Avatar billede fangel Nybegynder
21. august 2003 - 15:58 #20
det går nok ;)

det svære er ikke hade, det er at tilgive - og hvorfor gå efter noget der ikke er det sværeste?

Morten
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester