Het strippen van bepaalde tekst uit een database

Pagina: 1
Acties:

  • TiSaE
  • Registratie: Juli 2002
  • Laatst online: 17-05 18:27
Via een WYSIWYG editor laadt ik tekst in. Dit gebeurt via de code:

code:
1
var myval= ' De inhoud komt hier';


De enige voorwaarde die eraan zit is dat de code, op 1 regel moet blijven staan.
Dus:
werkt wel:
code:
1
var myval= ' De inhoud komt hier';


werkt niet:
code:
1
2
var myval= ' De inhoud komt hier
<br>De inhoud is hier';



Om toch te zorgen dat dit probleem niet voorkomt gebruik ik de volgende code:

code:
1
$inhoud = str_replace ("\n", "<br>", "$inhoud");


Alleen het werkt niet echt, ik zie geen enkele resultaat......
Hopelijk is dit een beetje duidelijk zoniet probeer ik het wat duidelijker uit te leggen... :P

  • Boss
  • Registratie: September 1999
  • Laatst online: 12:51

Boss

+1 Overgewaardeerd

Wat werkt er niet? Wat is de waarde van $inhoud na het uitvoeren van de str_replace?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Welke taal, welke database?
(aangezien het waarschijnlijk php zal zijn kan ik je aanraden om nl2br() te gebruiken)

Blog [Stackoverflow] [LinkedIn]


  • Skaah
  • Registratie: Juni 2001
  • Niet online
PHP:
1
str_replace("\n","myval += '",$string);

En dan nog ff fijnafstellen

  • TiSaE
  • Registratie: Juli 2002
  • Laatst online: 17-05 18:27
Ja sorry, de programmeer talen:
  • PHP
  • Javascript
  • SQL
De waarde van $inhoud kan zijn:
code:
1
2
<p>Lorem ipsumLorem ipsumLorem ipsum</p>
<br><b>Lorem ipsum Lorem ipsumLorem ipsum</b>

Let wel wanneer dit de inhoud is...krijg je foutmelding en wordt de WYSIWYG niet geladen

[ Voor 55% gewijzigd door TiSaE op 09-01-2005 20:51 ]


  • Skaah
  • Registratie: Juni 2001
  • Niet online
Welke editor gebruik je dan? SPAW lost het bijvoorbeeld zo op, misschien kun je iets met deze gedachte: (sorry crisp voor d.all)
HTML:
1
2
3
4
5
6
<script language="javascript">
<!--
setTimeout('document.all.page_body.value ="<P><STRONG>12 augustus 2004</STRONG></P>\\n";',0);
setTimeout('document.all.page_body.value +="<UL>\\n";',0);
setTimeout('document.all.page_body.value +="<LI>Datum bij /command/photo/id/%d/ omgezet naar Nederlands <EM>[wjs]</EM></LI></UL>\\n";',0);
setTimeout('document.all.page_body.value +="<P><FONT size=2><STRONG>13 augustus 2004</STRONG></FONT></P>\\n";',0);

Dus elke regel apart in een JS-expressie.

  • TiSaE
  • Registratie: Juli 2002
  • Laatst online: 17-05 18:27
Hmmm de editor heb ik ergens gevonden.... maar dat maakt niet zoveel uit voor het probleem....

Maar het probleem zit hem erin dat een enter als die opgeslagen wordt in de SQL database. En vervolgens de data uit de SQL database gehaald wordt de \n niet meegenomen wordt.... nou ja niet om \n te vervangen met niks.....

  • Standeman
  • Registratie: November 2000
  • Laatst online: 13:39

Standeman

Prutser 1e klasse

In wat voor type veld zit de tekst?

Ik kon het niet zo snel vinden, maar zou best kunnen zijn dat \n tekens niet worden opgeslagen in een varchar veld. In een textveld dacht ik van wel.... (weet het niet 100% zeker meer)

The ships hung in the sky in much the same way that bricks don’t.


  • TiSaE
  • Registratie: Juli 2002
  • Laatst online: 17-05 18:27
De editor zelf is een dynamisch iframe....

Ik zorg ervoor dat bij het opslaan de gegevens die in het iframe staan, worden gekopieerd naar een tekstveld

Tekstveld
code:
1
<input name="content" type="hidden" />


Kopieer functie
code:
1
2
3
4
5
function opslaan()
{
  document.form.content.value = idEdit.document.body.innerHTML; 
  document.form.submit();
}

hierbij is idEdit de naam van het iframe

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Misschien is het een ideetje om gewoon eventjes een update over je database te halen als het toch voor altijd veranderd moet worden?
UPDATE tabel(tekst) SET tekst=REPLACE(tekst, "\n", "<br />");

[ Voor 18% gewijzigd door Wolfboy op 09-01-2005 22:03 ]

Blog [Stackoverflow] [LinkedIn]


  • TiSaE
  • Registratie: Juli 2002
  • Laatst online: 17-05 18:27
dat is wel een idee, maar het is niet de bedoeling om \n te vervangen door <br> maar juist met niks zodat alles op 1 regel blijft staan:

code:
1
var myval = '<b>loremipsum loremipsum loremipsum loremipsum </b>';

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

\n replacen door \\n (en \r verwijderen of ook in \\r replacen) :?

PHP:
1
$string = str_replace(array("\n","\r"),array("\\n","\\r"),$string);

[ Voor 40% gewijzigd door Erkens op 09-01-2005 23:25 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:46

crisp

Devver

Pixelated

Zie Erkens; maar zo kan ook:
PHP:
1
$string = str_replace(array("\n","\r"),array('\n','\r'),$string);

;)
tabs e.d. kan op dezelfde manier :)

[ Voor 14% gewijzigd door crisp op 09-01-2005 23:32 ]

Intentionally left blank


  • TiSaE
  • Registratie: Juli 2002
  • Laatst online: 17-05 18:27
Ga ff kijken of dit de oplossing is...... Maar vraag het me af, omdat str_replace niet werkt. Het lijkt wel dat zoals het in de database gezet wordt zonder \n is.... maar dat zoek ik nog uit.

To be continued

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

crisp schreef op zondag 09 januari 2005 @ 23:32:
Zie Erkens; maar zo kan ook:
PHP:
1
$string = str_replace(array("\n","\r"),array('\n','\r'),$string);

;)
tabs e.d. kan op dezelfde manier :)
true, alleen voor de duidelijkheid gebruik ik daar dubbele quotes en een extra backslash, omdat sommige niet direct zien dat een single quote niet "geparsed" wordt :P

  • TiSaE
  • Registratie: Juli 2002
  • Laatst online: 17-05 18:27
Nou zit ik me even te bedenken, wat is nou het verschil met de quotes?? Of ik snap de oplossing niet, maar het lijkt me alsof het dubbelop is..... :?

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Probeer dit maar dan word het wel duidelijk denk ik:
PHP:
1
2
3
4
5
6
7
<pre>
<?php
$foo = 'bar';
echo "Foo: $foo \n";
echo 'Foo: $foo \n';
?>
</pre>

Blog [Stackoverflow] [LinkedIn]


  • TiSaE
  • Registratie: Juli 2002
  • Laatst online: 17-05 18:27
Wolfboy schreef op dinsdag 11 januari 2005 @ 09:36:
Probeer dit maar dan word het wel duidelijk denk ik:
PHP:
1
2
3
4
5
6
7
<pre>
<?php
$foo = 'bar';
echo "Foo: $foo \n";
echo 'Foo: $foo \n';
?>
</pre>
Ja ok, dit verschil snap ik wel. Ik zie niet echt waarom ik 2x de controle moet uitvoeren.

code:
1
2
3
<? 
$string = str_replace(array("\n","\r"),array('\n','\r'),$string); 
?>


Hij wijzigt nu de "enters" met \r..... maar ff een reminder, wat was dat ook alweer. 8)7
Het wordt niet weergegeven in HTML code, maar het werkt wel! Maar of het de oplossing is weet ik niet. De enter zelf wordt vervangen door \r, maar zou het niet mogelijk zijn om gewoon de \n eruit te halen en met niks te vervangen?? Ik heb het volgende al geprobeerd, maar het lijkt dan net of de functie str_replace dan niet getriggerd wordt......
code:
1
2
3
<? 
$string = str_replace(array("\n",""),array('\n',''),$string); 
?>


Ik zoek dus nog even verder

[ Voor 52% gewijzigd door TiSaE op 11-01-2005 19:43 ]


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

het punt is dat windows een \n en een \r verzend, en 1 van die twee is dus ook genoeg om een nieuwe regel in je javascript te beginnen (iets wat je niet wilt immers). Zodra je dus alleen de \n escaped gaat dit fout bij content die vanaf een windows (of mac) afkomstig is :)
deze str_replace die ik hier poste escaped dus zowel \n alsmede \r waardoor dit letterlijk in je html/javascript komt te staan die dat snapt dat daar een enter moet staan :P

  • TiSaE
  • Registratie: Juli 2002
  • Laatst online: 17-05 18:27
Erkens schreef op dinsdag 11 januari 2005 @ 22:59:
het punt is dat windows een \n en een \r verzend, en 1 van die twee is dus ook genoeg om een nieuwe regel in je javascript te beginnen (iets wat je niet wilt immers). Zodra je dus alleen de \n escaped gaat dit fout bij content die vanaf een windows (of mac) afkomstig is :)
deze str_replace die ik hier poste escaped dus zowel \n alsmede \r waardoor dit letterlijk in je html/javascript komt te staan die dat snapt dat daar een enter moet staan :P
Kijk hier heb je wat aan!

Super!!!! _/-\o_ _/-\o_

Helemaal duidelijk, bedankt!
Pagina: 1