Avatar billede webcreator Nybegynder
27. juni 2003 - 09:07 Der er 37 kommentarer og
2 løsninger

Udskriv nøjagtigt som det blev angivet i en form

Hej.

Jeg vil gerne vide, hvilke metoder jeg kan bruge til, at få udskrevet mine brugeres input, på nøjagtig den måde, de har skrevet det på. Dvs. med mellemrum, HTML (koden må IKKE fortolkes) mm. Skal jeg virkelig hen, og lave et "filter", som replacer en masse ting ? Jeg har tænkt på at bruge <pre>, og så sætte en class på hvis det kan lade sig gøre. Men jeg venter lige, og ser hvad I har af forslag.
Avatar billede erikjacobsen Ekspert
27. juni 2003 - 09:12 #1
Du skal lave 3 ting: htmlentities, nl2br, samt erstatte mellemrum med &nbsp;
Avatar billede erikjacobsen Ekspert
27. juni 2003 - 09:13 #2
print str_replace(' ','&nbsp;',nl2br(htmlentities($tekst)));
Avatar billede webcreator Nybegynder
27. juni 2003 - 09:47 #3
Med mellemrum mente jeg <br> - sådan et :)
Avatar billede webcreator Nybegynder
27. juni 2003 - 09:47 #4
Men den anden er nok også god at have med :)
Avatar billede webcreator Nybegynder
27. juni 2003 - 09:48 #5
htmlentities - sørger den for, at koden ikke bliver afviklet ?
Hvad er nl2br ?
Avatar billede avminarm Juniormester
27. juni 2003 - 09:49 #6
NewLine2Break - den laver linie skift i formularen om til <br>
Avatar billede erikjacobsen Ekspert
27. juni 2003 - 09:50 #7
Og htmlenties laver fx < om til &gt; - ja ingen html
Avatar billede webcreator Nybegynder
27. juni 2003 - 09:51 #8
Ok, kanon. Vil jeg straks prøve :)
Avatar billede erikjacobsen Ekspert
27. juni 2003 - 09:52 #9
(Suk, det er for tídligt på dagen - tag jer ikke af hvad jeg skriver,
men hvad jeg mener ... *g*)
Avatar billede webcreator Nybegynder
27. juni 2003 - 09:53 #10
ErikJacobsen : Will do, hehe :-)
Avatar billede webcreator Nybegynder
27. juni 2003 - 09:56 #11
Jo, det virker næsten. Men sjovt nok, placeres teksten uden for mine tabeller. Mærkeligt.
Avatar billede webcreator Nybegynder
27. juni 2003 - 09:56 #12
echo "<td width=500 height=150 valign=top><div class=b2><b>Beskrivelse</b>: " . print str_replace(' ','&nbsp;',nl2br(htmlentities($res["besk"]))) . "</div></td>";
Avatar billede erikjacobsen Ekspert
27. juni 2003 - 09:57 #13
Så har du sikkert glemt en <tr> ... </tr>
Avatar billede webcreator Nybegynder
27. juni 2003 - 09:57 #14
Fjernede print :)
Avatar billede webcreator Nybegynder
27. juni 2003 - 09:58 #15
Virker jo dumt med 2 echo-funktioner :-)
Så det virker nu :) Smid et svar.
Avatar billede erikjacobsen Ekspert
27. juni 2003 - 09:58 #16
Næh hov (tidligt...):

echo "<td width=500 height=150 valign=top><div class=b2><b>Beskrivelse</b>: " .  str_replace(' ','&nbsp;',nl2br(htmlentities($res["besk"]))) . "</div></td>";
Avatar billede erikjacobsen Ekspert
27. juni 2003 - 09:58 #17
ok da
Avatar billede webcreator Nybegynder
27. juni 2003 - 09:59 #18
Hov, linieskift virker faktisk ikke.
Avatar billede erikjacobsen Ekspert
27. juni 2003 - 10:04 #19
Ikke?
Avatar billede webcreator Nybegynder
27. juni 2003 - 10:06 #20
Nope. Er helt sikker. Mellemrum erstattes fint. Og HTML koden vises også. Men <br>-funktionen virker ikke.
Avatar billede webcreator Nybegynder
27. juni 2003 - 10:07 #21
Du kan jo se koden et par indlæg ovenfor. Den eneste ændring jeg har lavet, er at fjerne print.
Avatar billede erikjacobsen Ekspert
27. juni 2003 - 10:10 #22
Har du et link
Avatar billede webcreator Nybegynder
27. juni 2003 - 10:13 #23
Sidder og tester lokalt på min laptop :)
Det er nemlig hemli hemli det jeg laver :)

Men du kan da få en større stump kode :

  echo "<table align=center width=500 cellspacing=0 cellpadding=5 style=\"border-left: 1px solid #000000; border-right: 1px solid #000000; border-bottom: 1px solid #000000\">";
  echo "<tr>";
  echo "<td width=500 height=150 valign=top><div class=b2><b>Beskrivelse</b>: " . str_replace(' ','&nbsp;',nl2br(htmlentities($res["besk"]))) . "</div></td>";
  echo "</tr></table>";

Sådan ser tabellen ud.

Fx. skrev jeg i min form :

test

test



test
-----

I min database står det korrekt. Men på mit website bliver det udskrevet sådan:

test test test (altså med et normalt mellemrum i stedet)
Avatar billede webcreator Nybegynder
27. juni 2003 - 10:17 #24
Hvis jeg viser "source", så ser det sådan ud :

<br&nbsp;/>
test<br&nbsp;/>
<br&nbsp;/>
<br&nbsp;/>
test<br&nbsp;/>
<br&nbsp;/>
<br&nbsp;/>
<br&nbsp;/>
<br&nbsp;/>
test
Avatar billede webcreator Nybegynder
27. juni 2003 - 10:48 #25
Ligner jo ikke en helt alm. <br>
Avatar billede webcreator Nybegynder
27. juni 2003 - 11:03 #26
Jeg tror det skyldes, at mellemrum erstattes af &nbsp;
Og da jeg egentlig ikke har specielt brug for den funktion, vil jeg bare fjerne den. Men str_replace(nl2br(htmlentities($res["besk"])))  fungere ikke
Avatar billede erikjacobsen Ekspert
27. juni 2003 - 11:08 #27
Nå ja. Men så er det jo bare fordi du skal lave str_replacen før du laver htmlentities.
Det havde jeg jo lige glemt
Avatar billede jensgram Nybegynder
27. juni 2003 - 11:10 #28
JA, det er fordi nl2br laver xhtml <br> - altså <br />

Prøv i stedet:

str_replace(array(' ', "\n"), array('&nbsp;', '<br>'), htmlentities($tekst));
Avatar billede jensgram Nybegynder
27. juni 2003 - 11:11 #29
Eller blot i en anden rækkefølge:

nl2br(str_replace(' ', '&nbsp;', htmlentities($tekst)));
Avatar billede jensgram Nybegynder
27. juni 2003 - 11:12 #30
Ups, havde ikke lige set din kommentar (11:08:27), Erik...
Avatar billede erikjacobsen Ekspert
27. juni 2003 - 11:12 #31
Faktisk:
nl2br(htmlentities(str_replace(' ', '&nbsp;',$tekst)));
Avatar billede jensgram Nybegynder
27. juni 2003 - 11:12 #32
Hmm, ja det er også en mulighed
Avatar billede erikjacobsen Ekspert
27. juni 2003 - 11:13 #33
Nej, ups, min dur ikke. Først htmlentities, så str_replace, og så nl2br.
Du har jo ret, mr_noname.
Avatar billede jensgram Nybegynder
27. juni 2003 - 11:14 #34
Nåh ja, ellers laver den vel &nbsp; om til &amp;nbsp; ... osv.
Avatar billede webcreator Nybegynder
27. juni 2003 - 11:31 #35
Jeg har brugt mr_noname's mulighed :
str_replace(array(' ', "\n"), array('&nbsp;', '<br>'), htmlentities($tekst));
Den virker rigtig godt :)
Avatar billede webcreator Nybegynder
27. juni 2003 - 11:33 #36
En sidste, sidste ting (har afsat 10 points mere siden start) :
Hvordan fjerne jeg funktionen med, at erstatte mellemrum med &nbsp;

Jeg prøvede at fjerne arrayet, men det gav fejl.
Avatar billede erikjacobsen Ekspert
27. juni 2003 - 11:35 #37
nl2br(htmlentities($tekst));
Avatar billede webcreator Nybegynder
27. juni 2003 - 11:40 #38
EJ > Yep, det var løsninge. Tak begge to :)

Mr. NoName > Smider du et svar ? Så deler i points :-)
Avatar billede jensgram Nybegynder
27. juni 2003 - 13:13 #39
Ja, det gør jeg da...
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