webForumDet fria alternativet

ingen HTML strul

4 svar · 220 visningar · startad av K@llen

K@llenMedlem sedan mars 20032 654 inlägg
#1
function formatText($text) {

      $text = nl2br ( $text );      
      $text = htmlspecialchars( $text, ENT_QUOTES );     
      $text = stripslashes( $text );      
     
      return $text;

}

Visst all html försvinner i ett naffs, men jag får <br> istället för mellanslag i inlägget. Hur gör man för att slippa html, och smatidigt ha kvar enterslagen i texten?

PhorpherMedlem sedan feb. 20002 059 inlägg
#2

Ta bort:

$text = nl2br ( $text );

Du säger först att du får en BR-tagg vid varje mellanslag. Men sen ändrar du dig till radbrytning. Antar att du menar det senare.

K@llenMedlem sedan mars 20032 654 inlägg
#3

Jo, men nu hamnar all text i en lång rad, fast att användaren delat upp texten i stycken (med enter) i formuläret.

PhorpherMedlem sedan feb. 20002 059 inlägg
#4

Jag tror jag missuppfattade dig.

Anledningen till att du får <BR> i texten beror på att du först konverterar alla dina radbrytningar (\n) till BR-taggar. Efter det så använder du htmlspecialchars() för att få bort all html-taggar. Det innebär att alla dina nyss genererade BR-taggar omsluts av & lt och & gt istället. Därför ser du BR-taggarna som text.

Lösningen är att anropa nl2br() efter htmlspecialchars() :)

K@llenMedlem sedan mars 20032 654 inlägg
#5

Ahhh, det skulle man ju kunnat lista ut själv. ;)

Tack för hjälpen Phorpher! :D

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb