[PHP] <br /> vervangen door lege regel

Pagina: 1
Acties:
  • 1.437 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 21980

Topicstarter
Ik ben bezig met een CMS in PHP. Ik wil onder andere een gedeelte erin maken zodat berichten gewijzigd kunnen worden.

Dit doe ik door het bericht dat gewijzigd moet worden in te laden in een <textarea> en daar kan men dan het bericht wijzigen en na de submit wordt het gewijzigde bericht opgeslagen d.m.v. UPDATE. Maar omdat ik ook de <br />'s opsla in de database, worden deze uiteraard ook ingeladen in de <textarea> en dat wil ik niet. Ik wil dat de <br /> vervangen wordt door een lege regel.

Ik heb van alles geprobeerd en het verst dat ik gekomen ben is zo:
PHP:
1
2
$tekst = $rij['bericht'];
$resultaat = preg_replace ("<br />","", $tekst);


Waarbij ik $resultaat in de <textarea> echo. Maar op deze manier wordt een <br /> vervangen door <>. Ik wil dus dat een <br /> vervangen wordt door een lege regel en ook dat als een <br /> aan het einde van een regel staat dat deze dan ook vervangen wordt door een lege regel.

Voorbeeldje hoe het eruit ziet in de <textarea>:
code:
1
2
3
4
5
6
7
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.<>
<>
Praesent sed turpis.<>
<>
Donec iaculis cursus nunc.<>
<>
Nunc vehicula, dui vehicula vehicula rhoncus, tellus erat eleifend lorem, eget vestibulum enim tortor a dui. Integer porttitor posuere felis.


Stel dat ik zover kom dat uiteindelijk de <> vervangen worden door een lege regel in de <textarea>, dan zit ik nog met de <> die aan het einde van een regel staan, want als ik de wijzigen na submitten weer in de database opsla dan wil ik uiteraard dat de lege regels weer vervangen worden door <br /> en dat gebeurt uiteraard d.m.v. nl2br, maar dan mis ik dus een aantal <br />'s.

Ik hoop dat ik het zo duidelijk uitgelegd heb ;).

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16-06 17:49

gorgi_19

Kruimeltjes zijn weer op :9

Je wilt die <br> dus vervangen door een \r\n / NewLine Character? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • SeatRider
  • Registratie: November 2003
  • Laatst online: 16-06 14:44

SeatRider

Hips don't lie

Ik geloof dat ik bij het opslaan en editen gewoon lege regels zou gebruiken, en pas bij het displayen lege regels liet vervangen door <br />. Lijkt me netter.

Nederlands is makkelijker als je denkt


Acties:
  • 0 Henk 'm!

  • geez
  • Registratie: Juni 2002
  • Laatst online: 29-03 14:59
PHP:
1
$resultaat = str_replace("<br />","\n",$tekst);
:? (Soortgelijke manier gebruikt in mijn eigen CMSje..)

Heb overigens ereg_replace gebruikt zie ik nu, maar afaik zou str_replace ook gewoon werken moeten..

[ Voor 61% gewijzigd door geez op 25-09-2006 18:47 ]


Acties:
  • 0 Henk 'm!

Anoniem: 21980

Topicstarter
gorgi_19 schreef op maandag 25 september 2006 @ 18:41:
Je wilt die <br> dus vervangen door een \r\n / NewLine Character? :)
Ja, dat wil ik :), maar hoe :)?

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16-06 17:49

gorgi_19

Kruimeltjes zijn weer op :9

Kijk eens naar je eigen code wat je nu doet? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Xenon
  • Registratie: Januari 2001
  • Laatst online: 12-06 15:49
best eens kijken naar de php-functies nl2br en br2nl

ProtocoLAN.be: De beste LAN van de Maaskant


Acties:
  • 0 Henk 'm!

Anoniem: 21980

Topicstarter
geez schreef op maandag 25 september 2006 @ 18:43:
PHP:
1
$resultaat = str_replace("<br />","\n",$tekst);
:? (Zelfde manier gebruikt in mijn eigen CMSje..)
:D Bedankt, dat is 'm uiteraard, een paar uur geleden had ik inderdaad ook met str_replace zitten kloten, maar ik kreeg het toen niet voor elkaar, ik ben er al de hele dag mee bezig :D.

Bedankt hoor :>.

Acties:
  • 0 Henk 'm!

  • remy007
  • Registratie: Oktober 2004
  • Laatst online: 16-06 12:01

remy007

Broodje Bakpao Helmond

Kun je niet beter het volgende gebruiken?
PHP:
1
2
3
<?php
$resultaat = nl2br($tekst); 
?>


Althans dat gebruikte ik altijd voor line-breaks e.d.

* V&A Advertenties * Systemen: Inventaris


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16-06 17:49

gorgi_19

Kruimeltjes zijn weer op :9

Anoniem: 21980 schreef op maandag 25 september 2006 @ 18:47:
:D Bedankt, dat is 'm uiteraard, een paar uur geleden had ik inderdaad ook met str_replace zitten kloten, maar ik kreeg het toen niet voor elkaar, ik ben er al de hele dag mee bezig :D.
Had je al gekeken bij de comments bij http://nl2.php.net/function.nl2br :P Daar staan ook voorbeelden voor het omgekeerde :+

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Anoniem: 21980

Topicstarter
remy007 schreef op maandag 25 september 2006 @ 18:47:
Kun je niet beter het volgende gebruiken?
PHP:
1
2
3
<?php
$resultaat = nl2br($tekst); 
?>


Althans dat gebruikte ik altijd voor line-breaks e.d.
Eehm, volgens mij heb jij mijn topic niet goed gelezen ;).

Acties:
  • 0 Henk 'm!

Anoniem: 21980

Topicstarter
gorgi_19 schreef op maandag 25 september 2006 @ 18:48:
[...]

Had je al gekeken bij de comments bij http://nl2.php.net/function.nl2br :P Daar staan ook voorbeelden voor het omgekeerde :+
Ik had dat nog niet opgezocht op php.net, maar wel in m'n hoofd bedacht, maar omdat ik dacht dat het niet zo simpel zou kunnen zijn, had ik het nog niet uitgeprobeerd :+.

Acties:
  • 0 Henk 'm!

  • Tepel
  • Registratie: Juni 2006
  • Laatst online: 17-08-2024
De standaard methode is echter:
tekst opslaan in databeest zonder mutaties (dus incl CRLF chars)
Bij het weergeven van de tekst (als html en dus niet in een textarea) er nl2br() overheen halen.
Op die manier kan je je databeest ook nog eens normaal doorlezen zonder dat overal <br /> tags staan

0x7F


Acties:
  • 0 Henk 'm!

  • DemonTPx
  • Registratie: December 2002
  • Laatst online: 09-04 10:49
over deze regel:
PHP:
1
$resultaat = preg_replace ("<br />","", $tekst);


je moet bij die regular expression bijvoorbeeld slashes er omheen zetten, zodat je in plaats van "<br />", dit krijgt: "/<br \/>/" of bijvoorbeeld dit: "|<br />|"

en om een nieuwe regel weer te geven in een string kun je dus \n gebruiken.

dit zou je code kunnen worden:
PHP:
1
$resultaat = preg_replace ("/<br \/>/","\n", $tekst);

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:52

Janoz

Moderator Devschuur®

!litemod

Let er trouwens wel op dat nl2br een compleet verkeerde naamgeving voor die functie is. De newlines worden namelijk helemaal niet vervangen. Er word alleen een <br /> (of <br>) bij gezet. Voor het terug vertalen hoef je dus enkel alle <br> tags te verwijderen.

@hieronder: De html is zeker netter, maar noem de functie dan addBr oid.

[ Voor 12% gewijzigd door Janoz op 26-09-2006 14:43 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
Janoz schreef op dinsdag 26 september 2006 @ 10:00:
Let er trouwens wel op dat nl2br een compleet verkeerde naamgeving voor die functie is. De newlines worden namelijk helemaal niet vervangen. Er word alleen een <br /> (of <br>) bij gezet. Voor het terug vertalen hoef je dus enkel alle <br> tags te verwijderen.
Iets wat de netheid van de HTML code uiteraard wel ten goede komt.

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Mag ik hierop inhaken, want waarom gebruikt php <br/> (xhtml), en niet gewoon (want de functie heet ook nl2br) <br>?
Is er een andere mogelijkheid dan een replace van <br/> naar <br>. Volgens mij is nl <br> nog steeds html en <br/> xhtml. En als ik gewoon html schrijf wil ik liever een nl2br2html() oid :p

Edit. Ik heb de note wel gelezen trouwens:
Note: Starting with PHP 4.0.5, nl2br() is now XHTML compliant. All versions before 4.0.5 will return string with '<br>' inserted before newlines instead of '<br />'.
@hieronder: daar was ik idd ook al achter. Maar dan schrijf je eigenlijk een eigen nl2br :p Het moest makkelijker kunnen vond ik. Hoewel, de oplossing is ook helemaal niet moeilijk ofzo 8)7

[ Voor 44% gewijzigd door mithras op 26-09-2006 14:52 ]


Acties:
  • 0 Henk 'm!

  • danslo
  • Registratie: Januari 2003
  • Laatst online: 23:56
Mithras86 schreef op dinsdag 26 september 2006 @ 14:46:
Mag ik hierop inhaken, want waarom gebruikt php <br/> (xhtml), en niet gewoon (want de functie heet ook nl2br) <br>?
Is er een andere mogelijkheid dan een replace van <br/> naar <br>. Volgens mij is nl <br> nog steeds html en <br/> xhtml. En als ik gewoon html schrijf wil ik liever een nl2br2html() oid :p

Edit. Ik heb de note wel gelezen trouwens:

[...]
doe een str_replace die \n<br> plaatst als hij een \n tegenkomt? :P

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 16-06 16:49

Johnny

ondergewaardeerde internetguru

Mithras86 schreef op dinsdag 26 september 2006 @ 14:46:
Mag ik hierop inhaken, want waarom gebruikt php <br/> (xhtml), en niet gewoon (want de functie heet ook nl2br) <br>?
Is er een andere mogelijkheid dan een replace van <br/> naar <br>. Volgens mij is nl <br> nog steeds html en <br/> xhtml. En als ik gewoon html schrijf wil ik liever een nl2br2html() oid :p

Edit. Ik heb de note wel gelezen trouwens:

[...]
<br/> is ook valid HTML. Maar als je niet die slash wilt dan kan je dit doen:

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

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:52

Janoz

Moderator Devschuur®

!litemod

Dat levert dan weer problemen op bij de \r en de \r\n newlines

[ Voor 3% gewijzigd door Janoz op 26-09-2006 14:52 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Janoz schreef op dinsdag 26 september 2006 @ 14:52:
Dat levert dan weer problemen op bij de \r en de \r\n newlines
edit:
dan heb ik niets gezegd :X


Maar dan blijft de vraag hoe het wel kan (zonder \r\n, \n en \r apart af te vangen als dat kan) :)

[ Voor 60% gewijzigd door mithras op 26-09-2006 15:11 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:25

crisp

Devver

Pixelated

het is inderdaad valid HTML, maar niet op de manier zoals jij denkt:
< = tag-open
br = tagname
/ = tag-close (SGML SHORTTAG construct*)
> = content

* de SGML SHORTTAG constructie is in bijna geen enkele browser geimplementeerd, in plaats daarvan zal de / als een invalid(!) attribuut worden gezien en dankzij error-correctie genegeerd worden.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:52

Janoz

Moderator Devschuur®

!litemod

Mithras86 schreef op dinsdag 26 september 2006 @ 14:54:
[...]
PHP:
1
2
3
$str = "een stukje tekst\n\rmet een line break";
$str = str_replace("\n", "<br>\n", $str); 
echo $str; //levert toch "een stukje teks<br>\n\rmet een line break" op?
Je zet nl voor /n gewoon <br>
Heb je mijn reactie wel goed gelezen? ;).

De \r staat voor de \n dus je stukje levert \r<br>\n op en daarnaast wordt een single \r niet vervangen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1