Avatar billede Bjarne Novice
13. april 2005 - 21:01 Der er 9 kommentarer og
1 løsning

Problem med nl2br()

jeg har lavet et profil-system, hvor man kan redigere sin egen profil. På inputtet fra brugeren har jeg brugt nl2br() og htmlentities(). Problemet opstår når der laves linjebrud, hvorefter profilet redigeres. Så vises <br />'erne, og det er ikke ligefrem hensigtsmæssigt. Jeg har prøvet med html_entity_decode(), men det har ikke den ønskede effekt.

I kan prøve at oprette en bruger her: http://volieren.dk/start.php?id=add

Prøv med brugeren at redigere profilet. Skriv noget med nogle linjebrud.
Prøv derefter at redigere brugeren igen, og så kommer <br /> frem i redigeringen og i selve profilet.

Hvordan løser jeg dette problem?
Avatar billede barklund Nybegynder
13. april 2005 - 21:04 #1
Du bør have to felter i din database. Et til den "rå" profilside og et til den formatterede. Så kan du indsætte den rå i tekstfeltet når man skal redigere sin profil samt den formatterede når man skal se en profil.
Avatar billede voirsous Nybegynder
13. april 2005 - 21:33 #2
alternativt akn du udskrive den 'rå profil txt' mellem
tagget <pre> og <pre>.

Eller strip_tags() når du smider teksten ind igen.

Når tekst står i<pre> tag opfatter browseren almindeligt linieskift som et <br>.
Avatar billede cmau Nybegynder
13. april 2005 - 21:35 #3
Det er fordi du først skal bruge nl2br() og htmlentities(), når du udskriver brugeres profil, i databasen gør det ikke noget at der er html tags med
Avatar billede Bjarne Novice
13. april 2005 - 21:42 #4
barklund>Forstår ikke helt hvordan man skal få de to felter til at spille sammen. Der skal jo være mulighed for at redigere indholdet.

voirsous> strip_tags() gjorde det. Det er en ganske fin og let løsning. Tak for det
Avatar billede Bjarne Novice
13. april 2005 - 21:49 #5
cmau> Det kunne jeg ikke få til at virke. Men lige meget. strip_tags() er perfekt
Avatar billede barklund Nybegynder
13. april 2005 - 21:50 #6
Korrekt, hver gang man gemmer sin profil, gemmer du direkte hvad brugeren indtastede i databasen i det ene felt og en nl2br-version i det andet felt. Indholdet af de to er i praksis ens.

Du kan så bruge det ene til at vise i tekstfeltet på "rediger profil"-siden. Og det andet bruger du på "vis profil"-siden.

Det er efter min mening en absolut smartere metode. Måske ikke her, hvor det blot drejer sig om nl2br, men det er smart, hvis man vil lave mange erstatninger på teksten - for eksempel ved at lave links og e-mails om til html-links og tilsvarende. Så kan det ikke svare sig at gøre hver gang, teksten skal vises men kun en gang, når teksten opdateres.

--
Morten Barklund
Avatar billede yHec Novice
14. april 2005 - 11:05 #7
jeg hat i min gæstebog gjort det således, at jeg først bruger nl2br når oplysningerne hentes... Dvs hver gang de vises. På den måde undgår man også barklunds løsning med to felter = mere vedligehold, større DB og længere loadtid!

Det virker perfekt

/jan
Avatar billede barklund Nybegynder
14. april 2005 - 11:22 #8
Større db, mjaa en smule.

Mere vedligehold? Det kan jeg ikke lige følge, men ja, man indsætter to felter hver gang i stedet for et.

Længere loadtid? Det kan da umuligt være tilfældet. I den ene version henter man et felt ud af databasen, kører nl2br og viser det. I den anden version henter man et felt ud af databasen og viser det. Hvordan kan det sidste tage længere tid?
Avatar billede yHec Novice
14. april 2005 - 12:57 #9
Hvis man skal være en rigtig flueknepper... Så er data fra feltet EMD tags længere end det uden tags....

Og det tager altså længere tid (omend meget meget meget lidt længere) at hente fra en databasen en at køre nl2br på en streng!

Jeg mener bare det er "at gå over åen efter vand" at have to stort set ens felter, når problemet kan løses idfra det en af dem!

Man kunne da gøre det som er blevet gjort, nemli strippe tags'ne før der skrives. Men det er det samme jeg foreslår, bare i omvendt rækkefølge. Det virker ihvertfald for mig:-)

/jan
Avatar billede barklund Nybegynder
14. april 2005 - 13:46 #10
Men som jeg også skrev, så er det knap så relevant her, hvor det kun drejer sig om nl2br. Men hvis man har meget formattering i for eksempel et forum, hvor der via komplekse regulære udtryk highlightes smileys, url'er, email og så videre - og man samtidig skal have mulighed for at redigere indlæggende - så vil det afgjort være smartest at gemme begge versioner ved hver opdatering.
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