[PHP] preg_replace probleem met linefeeds

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik stuit op een probleempje met preg_replace, en kom er niet uit.

In een tekst met UBB code wil ik dubbele citaten voorkomen, door eerdere citaten in die tekst te vervangen door [...], zoals hier:

[...]
Test
(op de plek van [...] stond dus al een UBB code in de vorm van [ quote ]Hello world[ /quote ].)

Ik gebruik het volgende script:
PHP:
1
$str = preg_replace('~\\[quote\].+?\\[/quote\]~i', "[...]", $str);


Dit werkt wel wanneer de tekst op de plaats van het vraagteken uit 1 regel bestaat, maar niet als de tekst linefeeds bevat. Weet iemand wat ik fout doe?

Ik kan wel een workaround maken door alle linefeeds eerst te vervangen door iets anders, maar dat kan niet de bedoeling zijn.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

s-modifier gebruiken (dot-match-all)

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou de regex zo maken:

PHP:
1
$str = preg_replace('~\\[\s*quote\s*\].+?\\[\s*/\s*quote\s*\]~is', "[...]", $str);

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
crisp schreef op donderdag 09 maart 2006 @ 17:38:
s-modifier gebruiken (dot-match-all)
Ja hoor, ik was er al bang voor dat het zoiets simpels was.

Bedankt!

[ Voor 51% gewijzigd door Verwijderd op 09-03-2006 17:42 ]


Acties:
  • 0 Henk 'm!

  • kauwgomballen
  • Registratie: Oktober 2001
  • Laatst online: 23-06 19:54
Voor dit soort problemen gebruik ik altijd The Regex Coach: http://www.weitz.de/regex-coach/