Avatar billede clean Nybegynder
20. maj 2003 - 14:40 Der er 5 kommentarer og
1 løsning

Modsat nl2br

Har haft dette oppe engang før her http://www.eksperten.dk/spm/344098 , men fik ikke rigtigt løst mit problem.
Så nu opretter jeg dette spørgsmål, mere avanceret, i håb en et brugbart svar!

I mit homemade nyheds-system gider jeg ikke skrive <br> hvergang den skal indsætte et linjeskift - derfor har jeg fixet dette lille stykke kode:

$message = nl2br(htmlentities(addslashes(trim($message))));

Når jeg skriver til databasen kan det se f.eks. sådan her ud:

"Jeg hedder Kenneth, og er 15 år gammel.
Hvor gammel er du?"

I databasen kommer det til at se sådan her ud:

"Jeg hedder Kenneth, og er 15 år gammel.<br />Hvor gammel er du?"

Men den viser det korrekt når den skal vise nyheden for offentligheden.

Så kommer mit problem:
For at kunne redigere har jeg fået et stykke kode, som gør det modsatte af nl2br når nyheden skal hentes ud i et <textarea>, og koden ser således ud:

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

Det bliver også vist korrekt i <textboxen>, udover at der er en fejl.
Den laver dobbelt-linjeskift i stedet for kun et enkelt.

Hvis en linje havde set sådan her ud i databasen:

"Jeg hedder Kenneth, og er 15 år gammel.<br />Hvor gammel er du?"

Så udskriver den det sådan her:

"Jeg hedder Kenneth, og er 15 år gammel.

Hvor gammel er du?"

Istedet for sådan her:

"Jeg hedder Kenneth, og er 15 år gammel.
Hvor gammel er du?"

Altså, den laver et ekstra linjeskift, end den egentlig skulle... og kan ikke helt forstå det! :/

Hvad kan problemet være... please help!!!
Avatar billede Slettet bruger
20. maj 2003 - 14:42 #1
hvorfor lader du det ikke være \n'er i databasen, og så laver nl2br(), når du udskriver? det er meget nemmere, og fylder et par bytes mindre i databasen!
Avatar billede clean Nybegynder
20. maj 2003 - 14:44 #2
Kan du komme med et eksempel?
Er ikke så kendt med \n og nl2br... :/
Avatar billede Slettet bruger
20. maj 2003 - 14:50 #3
Et tekstfelts indhold lagt ind i en database indholder automatisk linieskift, det samme gør sig gældende når du lægger det ind i et tekstfelt igen.

Derfor har qpq-mads ret i sit forslag :)
Avatar billede Slettet bruger
20. maj 2003 - 14:56 #4
når du smider teksten i databasen gør du ikke noget ved linieskiftene, men når du skriver ud istedet.


echo nl2br($row['message']);
Avatar billede tipsen Nybegynder
20. maj 2003 - 14:58 #5
mads' forslag er absolut bedste forslag, men det er også muligt at lave en "omvendt" nl2br() selvom det ikke kan anbefales!

$text = str_replace('<br />', '', $text);

-det udnytter at nl2br() egentlig ikke laver en decideret erstatning af \n, men bare en indsætning af <br /> ved alle \n - dvs. \n ligger stadig i teksten!
Avatar billede clean Nybegynder
20. maj 2003 - 16:13 #6
Nu begynder jeg at fatte det! :)
Og det virker...! Mange tak! :D
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