[PHP] replace return by <br>

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb het volgende probleem:

ik ben bezig met kleine cms-module. via een form gaat tekst (met php) de mysql-database in, dat kunnen ook meerdere regels zijn. later in de html wordt deze tekst opgehaald (ook met php natuurlijk), binnen een javascript (dat maakt op zich niets uit). alleen als er returns in de tekst zitten gaat dat fout, dus die moeten vervangen worden door <br>

op php.net staat vanalles over nl2br, trim etc., maar kom er niet echt uit. bijvoorbeeld de return vervangen '\n' helpt niet, want die staan er niet

concreet voorbeeld:

var main4 = "1 regel
2 regels";

>> moet zijn:

var main4 = "1 regel<br>2 regels";

Acties:
  • 0 Henk 'm!

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 06:19

johnwoo

3S-GTE

nl2br is op zich een goede oplossing, maar die vervangt de newlines niet, maar zet <br>'s voor de newlines. Voor HTML maakt dat niet uit, maar voor JavaScript inderdaad wel. In plaats van nl2br zou je ook str_replace kunnen gebruiken om de newlines echt te vervangen door <br>'s.

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Eventueel kun je ook checken op \r.

Rustacean


Acties:
  • 0 Henk 'm!

Verwijderd

Dit is een herkenbaar probleem. Tijdje geleden wat onderzoek naar gedaan en het zit zo:

Andere besturingsystemem intrepeteren newlines anders. Linux gebruik \n, de MAC gebruikt \r en windows allebei \n\r. Het beste kun je dit probleem dus zo oplossen:
PHP:
1
2
3
4
5
6
$string = "test
test
test"; //str
$string = ereg_replace("\n", "", $string); // linux
$string = ereg_replace("\r", "", $string); // mac (en windows icm bovenstaande regel)
echo $string;


Deze 2 newlines hebben ook een andere assci-waarde, dus op deze manier zou het ook nog kunnen:

PHP:
1
2
3
4
5
6
$string = "test
test
test"; //str
$string = ereg_replace(10, "", $string); // linux
$string = ereg_replace(13, "", $string); // mac (en windows icm bovenstaande regel)
echo $string;

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kijk eens aan, precies wat ik bedoel :)

deze oplossing werkte voor mij:

PHP:
1
2
$string = ereg_replace("\n", "<br>", $string);
$string = ereg_replace("\r", "", $string);

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 27 May 2003 @ 07:20:
Deze 2 newlines hebben ook een andere assci-waarde, dus op deze manier zou het ook nog kunnen:

PHP:
1
2
3
4
5
6
$string = "test
test
test"; //str
$string = ereg_replace(chr(10), "", $string); // linux
$string = ereg_replace(chr(13), "", $string); // mac (en windows icm bovenstaande regel)
echo $string;
Zie edit ;)

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

En waarom niet gewoon met nl2br?
Lamaar. * OkkE zou is moeten lezen! |:(

[ Voor 48% gewijzigd door OkkE op 27-05-2003 08:54 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 27 mei 2003 @ 08:10:
kijk eens aan, precies wat ik bedoel :)

deze oplossing werkte voor mij:

PHP:
1
2
$string = ereg_replace("\n", "<br>", $string);
$string = ereg_replace("\r", "", $string);
Bij een mac hou je dan dus 1 grote string over zonder breaks :)
PHP:
1
$string = preg_replace('/\r\n|\r|\n/', '<br />', $string);

[ Voor 13% gewijzigd door crisp op 27-05-2003 09:02 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Jep werkt ook, maar wanneer je in de functie ereg_replace enkel een integer meegeeft pakt hij automatisch het teken van die assci-waarde...

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 27 May 2003 @ 15:55:
[...]

Jep werkt ook, maar wanneer je in de functie ereg_replace enkel een integer meegeeft pakt hij automatisch het teken van die assci-waarde...
Weer wat geleerd :)
Ik had al zo'n vermoeden, maar zeker weten deed ik het niet.

Acties:
  • 0 Henk 'm!

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Waarom ereg_replace (extended regular expression) als je dat niet gebruikt :)
Dan is str_replace() stukken sneller :)

Acties:
  • 0 Henk 'm!

Verwijderd

ooffuh:
str_replace(array("\r\n","\n","\r"),"<br>",$tekst);
Pagina: 1