[php] str_replace werkt niet juist in textarea*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MRED
  • Registratie: Maart 2000
  • Laatst online: 22-12-2020

MRED

Carpe diem...

Topicstarter
Met onderstaande code wil ik een reactie die in de database is geplaatst bewerken in een TEXTAREA. Met nl2br zijn de \n n(nieuwe regels) eerder omgezet naar br. Nu wil ik wanneer een reactie bewerkt wordt de br uiteraard niet weergeven. Na enig zoeken dacht ik dit dus met onderstaande code te kunnen doen maar het vreemde is dat deze code daar waar ik maar een witregel heb geplaatst er twee in de TEXTAREA zet.

PHP:
1
$r_reactie = str_replace("<br />", "\n", $r_reactie);

[ Voor 4% gewijzigd door MRED op 30-07-2005 13:23 ]

Mijn weblog


Acties:
  • 0 Henk 'm!

  • software
  • Registratie: Mei 2003
  • Laatst online: 02-01 09:26
In een textarea moet je niet werken met die regel. Textarea zet dit direct om naar <br />.
Je moet dus gewoon dit regel code verwijderen, en je heb dan maar 1 witregel.

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

Dit wil je toch ?

Acties:
  • 0 Henk 'm!

  • MRED
  • Registratie: Maart 2000
  • Laatst online: 22-12-2020

MRED

Carpe diem...

Topicstarter
software schreef op zaterdag 30 juli 2005 @ 13:25:
In een textarea moet je niet werken met die regel. Textarea zet dit direct om naar <br />.
Je moet dus gewoon dit regel code verwijderen, en je heb dan maar 1 witregel.

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

Dit wil je toch ?
Ja maar als ik die regel niet meeneem zie ik mijn textarea <br /> waar ik uiteraard gewoon een nieuwe regel wil zien en geen <br />

Mijn weblog


Acties:
  • 0 Henk 'm!

  • MRED
  • Registratie: Maart 2000
  • Laatst online: 22-12-2020

MRED

Carpe diem...

Topicstarter
Ik heb het nu zo opgelost:

PHP:
1
$r_reactie = str_replace("<br />", "", $r_reactie);


Dan wordt de <br /> niet weergegeven en krijg ik maar een witregel

Mijn weblog


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
nl2br():
Returns string with '<br />' inserted before all newlines
Met andere woorden: de newline blijft bestaan. Bij editen moet je dus niet de <br /> vervangen door een newline, maar gewoon weglaten:
PHP:
1
$r_reactie = str_replace('<br />', '', $r_reactie);

Overigens is het misschien beter om een ongeparsete versie in je database te hebben staan, zeker als je meer opmaakcodes gaat ondersteunen.

/hoi crisp :P

[ Voor 10% gewijzigd door GlowMouse op 30-07-2005 13:33 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

nl2br vervangt geen line-endings, maar voegt enkel een br toe voor de line-endings. Als je het wilt omdraaien moet je dus enkel de br's verwijderen:
PHP:
1
$r_reactie = str_replace('<br />', '', $r_reactie);


/laat :P

[ Voor 3% gewijzigd door crisp op 30-07-2005 13:32 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
GlowMouse schreef op zaterdag 30 juli 2005 @ 13:31:
Overigens is het misschien beter om een ongeparsete versie in je database te hebben staan, zeker als je meer opmaakcodes gaat ondersteunen.
Nou, precies. Die nl2br doe je pas als je het bericht gaat weergeven (in het forum?). Op die manier heb je de nette, originele tekst in je database waar je nog alles mee kunt. Veel efficienter en betrouwbaarder dan de tekst steeds weer de-coden (zeg maar).

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Nu online
Room42 schreef op zaterdag 30 juli 2005 @ 13:49:
Nou, precies. Die nl2br doe je pas als je het bericht gaat weergeven (in het forum?).
Dat zou ik ook niet doen. Bij een wat groter forum gaat dat zwaar ten koste van je performance. Gewoon 2 velden dus.

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Dennis schreef op zaterdag 30 juli 2005 @ 13:58:
[...]Dat zou ik ook niet doen. Bij een wat groter forum gaat dat zwaar ten koste van je performance. Gewoon 2 velden dus.
Dat is een beetje overdreven. Zolang het bij nl2br en enkele simpele replaces blijft, valt het best mee. Pas bij veel regular expression replaces gaat de moeite lonen.
Heb net nl2br getest op een bericht van 250 tekens (50 woorden) met 2 newlines, en een replace duurde 0,0000232 seconden op een P3 500MHz (benchmark 100.000x achter elkaar uitgevoerd). Dat is 4% langzamer als hetzelfde bericht zonder newlines.

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Nu online
GlowMouse schreef op zaterdag 30 juli 2005 @ 14:11:
Dat is een beetje overdreven. Zolang het bij nl2br en enkele simpele replaces blijft, valt het best mee. Pas bij veel regular expression replaces gaat de moeite lonen.
Dat klopt inderdaad, maar ik ging ervanuit dat TS wel meer 'parse' acties doet t.b.v. de reacties. Voor uitsluitend nl2br is het wat overdreven.
Pagina: 1