[php] alles tussen ( ) weghalen met preg_replace

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik heb een simpele vraag over preg_replace. Ik heb een string die er als volgt uitziet :

bla bla bla (iets tussen haakjes) rest (nog iets tussen haakjes)

en nu wil ik die tekst omzetten naar :

bla bla bla rest

dus gewoon zonder de tekst in haakjes. nu heb ik deze code :
PHP:
1
$string = preg_replace("(\(.*\))","",$string);

Maar het resultaat is :

bla bla bla

Dus de eerste haakjes worden weggehaald maar ook gelijk de rest van de string. Wat doe ik fout ?

[ Voor 4% gewijzigd door Verwijderd op 28-10-2005 11:52 ]


Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

code:
1
preg_replace("(\(.*\))U","",$string);


Pattern Modifiers

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
U (PCRE_UNGREEDY)

This modifier inverts the "greediness" of the quantifiers so that they are not greedy by default, but become greedy if followed by "?". It is not compatible with Perl. It can also be set by a (?U) modifier setting within the pattern or by a question mark behind a quantifier (e.g. .*?).
Je zult dus de U als pattern modifier mee moeten geven :)

edit:
Argh, FU disjfa :P

[ Voor 7% gewijzigd door Osiris op 28-10-2005 11:56 ]


Acties:
  • 0 Henk 'm!

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 15:08
misschien met str_replace?

PHP:
1
2
3
<?
$string = str_replace("(*)","()",$string);
?>


ofzo...

edit:
Oh nee, nou haalt ie (*) weg terwijl dat er niet staat.... Laat maar 8)7

[ Voor 59% gewijzigd door MuddyMagical op 28-10-2005 11:57 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
$string = preg_replace("/\([^)]\)/U","",$string);

Je vergeet sowieso de separators. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja met die U werkt het maar ik snap niet waarom ... ik zeg toch gewoon zoek een subpattern met ( ) en een tekst erin .... hoe kan hij dan buiten de haken tekst weghalen ?

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

code:
1
(iets tussen haakjes) rest (nog iets tussen haakjes)

Het eerste haakje staat op positie 1 en het sluitende haakje op de laatste positie. Dan haalt hij dus alles weg ;) Dat komt omdat regex vrij graag greedy is. (zo veel mogenlijk pakken) en dat wil je niet ;)

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok ik snap m dankjewel ;)
Pagina: 1