[php] Hoe regeleinde ECHT verwijderen?

Pagina: 1
Acties:

  • void
  • Registratie: September 2000
  • Laatst online: 08-12-2023
Ok ik zit dus met hetvolgende probleem:

Ben bezig met een admin interface die txtfiletjes update, die vervolgens in een flashmovie ingelzen worden. Dat werkt allemaal prima, alleen flash heeft moeite met regeleindes. Nu wil ik de tekst die iemand in een textarea intypt inclusief regeleinden omzetten naar een text zonder regeleinden maar met <p> tags (die ondersteund flash wel);



Ik heb de variable txt en die ziet er zo uit:
code:
1
2
3
4
Titel van tekst

En hier staat een verhaal met een paar regeleinden.
Dit was er een.

Nou doe ik
PHP:
1
<?$txt = "<p>".$txt."</p>";$txt = eregi_replace("\n","</p><p>",$txt);of :$txt = eregi_replace("([^\n]*)(\n)","<p>\\1</p>",$txt);?>

Wat ik dan krijg is:
code:
1
2
3
4
<p>Titel van de tekst
</p><p>
</p><p>En hier staat een verhaal met een paar regeleinden.
</p><p>Dit was er een.</p>

Ik blijf dus die regeleinden houden. Het zou
code:
1
<p>Titel van de tekst</p><p></p><p>En hier staat een verhaal met een paar regeleinden.</p><p>Dit was er een.</p>

moeten worden. Dit
code:
1
2
3
4
<p>Titel van de tekst</p>
<p></p>
<p>En hier staat een verhaal met een paar regeleinden.</p>
<p>Dit was er een.</p>

zou ook nog mogen Iemand een idee, hoe ik dit moet doen?

Le peintre de l'espace se jette dans le vide! (Y.Klein 1960)


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Mischien is het handiger om eerst een nl2br te doen. Het kan best zijn dat je nu alleen de /n vervangt terwijl er een /n/r staat. nl2br lost dit op.. Vervolgens kun je dan de <br /> tag wel vervangen door de paragraaf tags.

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


  • void
  • Registratie: September 2000
  • Laatst online: 08-12-2023
Ook als je nl2br doet maakt ie er geen lange string van. Hij laat nog steed de regeleinden staan hij plaatst er alleen een <br /> bij.

Wordt dan:
code:
1
2
3
4
Titel van de tekst<br />
<br />
En hier staat een verhaal met een paar regeleinden.<br />
Dit was er een.<br />

Le peintre de l'espace se jette dans le vide! (Y.Klein 1960)


  • tomato
  • Registratie: November 1999
  • Niet online
code:
1
$s = preg_replace('/\r\n?|\n/', '', $s);

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Op donderdag 11 juli 2002 16:56 schreef tomato het volgende:
code:
1
$s = preg_replace('/\r\n?|\n/', '', $s);
Bijna ;)
code:
1
2
$s = "<p>" . $s . "</p>";
$s = preg_replace('/(\r\n?|\n)/', '</p>\\1<p>', $s);

Hmm.. weet niet 100% of ie goed is.. Maar het ging me erom dat \r\n of \n vervangen werd door <p> wat-er-stond (dus \r\n of \n) </p> met voor en na de $s nog een <p> & </p> geplakt..

  • void
  • Registratie: September 2000
  • Laatst online: 08-12-2023
Tomato, dat werkt!
En elviver, dat is idd het logische vervolg.
Thanx!

Dat verschil tussen \r\n en \n heeft dat te maken met het platform van de client?

Le peintre de l'espace se jette dans le vide! (Y.Klein 1960)


  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Jup.. Windows/Mac/Unix verschillen alle 3

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Kan het ook niet met rtrim() na de toevoeging van de <P></P> ?

Sundown Circus


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Op donderdag 11 juli 2002 16:56 schreef tomato het volgende:
code:
1
$s = preg_replace('/\r\n?|\n/', '', $s);
de mac gebruikt toch alleen \r ?

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 14-12-2025
Op donderdag 11 juli 2002 23:02 schreef brammetje het volgende:

[..]

de mac gebruikt toch alleen \r ?
jah

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Dat pakt die regexp al...
\r\n? (mogelijke \n)

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Op vrijdag 12 juli 2002 02:09 schreef elviver het volgende:
Dat pakt die regexp al...
\r\n? (mogelijke \n)
ah zo, ik snapte hem al niet helemaal :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Is str_replace(array("\r", "\n"), '', $input); dan niet efficienter?
Of preg_replace('/[\r\n]/', '', $input); duidelijker ? :)

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Er moeten nog <p> en </p> omheen, om elke regel.. De preg-replace die gegeven is doet dat ook.. Wat is daar onefficient/onduidelijk aan?
Pagina: 1