[php]ereg_replace eerst volgende, niet laatste

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • GoVegan
  • Registratie: Juni 2002
  • Laatst online: 28-07 15:05
ff vraagje over ereg_replace, als ik het volgende gebruik:

PHP:
1
2
3
4
5
6
7
<?PHP
$inhoud="<em>plaats hier de cursieve text</em>
<em>plaats hier de cursieve text</em>
<em>plaats hier de cursieve text</em>
<em>plaats hier de cursieve text</em>";
echo ereg_replace("(<em>)(.*)(</em>)","[cur]\\2[/cur]",$inhoud);
?>


waarom grijpt hij dan bij het derde stukje (</em>) naar de aller laatste die hij kan vinden. hoe kan ik hem vertellen dat hij naar de eerst volgende moet gaan, en niet de laatste.

ik krijg dus de volgende output:
code:
1
2
3
4
[cur]plaats hier de cursieve text</em>
<em>plaats hier de cursieve text</em>
<em>plaats hier de cursieve text</em>
<em>plaats hier de cursieve text[/cur]


terwijl ik eigenlijk dit wil:
code:
1
2
3
4
[cur]plaats hier de cursieve text[/cur]
[cur]plaats hier de cursieve text[/cur]
[cur]plaats hier de cursieve text[/cur]
[cur]plaats hier de cursieve text[/cur]


ja ik weet ook wel dat ik dit geval ook wel beter str_replace kan gebruiken maar het betrefd hier een nog uitgebreiderde vervangings functie

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

door je regexp ungreedy te maken: .*?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • GoVegan
  • Registratie: Juni 2002
  • Laatst online: 28-07 15:05
crisp schreef op 10 november 2003 @ 23:14:
door je regexp ungreedy te maken: .*?
dan krijg ik een:
Warning: REG_BADRPT

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

GoVegan schreef op 10 november 2003 @ 23:15:
[...]

dan krijg ik een:
Warning: REG_BADRPT
oh, dan ondersteunt ereg_ dat ws niet. preg_ is meestal sowieso sneller en die ondersteunt het wel :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • GoVegan
  • Registratie: Juni 2002
  • Laatst online: 28-07 15:05
ah ke mooi, hij werkt.

voor de zoekers:
PHP:
1
2
3
4
5
6
7
<?PHP
$inhoud="<em>plaats hier de cursieve text</em>
<em>plaats hier de cursieve text</em>
<em>plaats hier de cursieve text</em>
<em>plaats hier de cursieve text</em>";
echo preg_replace("/(<em>)(.*?)(<\/em>)/","[cur]\\2[/cur]",$inhoud);
?>