[PHP] pattern meerdere malen laten matchen preg_match()

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo allemaal,

Ik ben nog niet heel bekend met regex, en krijg het niet voor elkaar om meer dan 1 keer de pattern te laten matchen.

Om te testen gebruik ik het volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$matches2 = array();
$string2 = 'foo{CUSTOM|ORDER|Order_id: [order_id]|2}bar foo{CUSTOM|PRODUCT|Naam: [pr_name]<br/>Prijs: [pr_price]|15}bar';

$pattern = '/\{CUSTOM{1}\|(VENDOR|ORDER|PRODUCT{1})\|([^|]*)\|?(\d*)?}/'; // werkt goed, alleen 1 keer

$match = preg_match( $pattern, $string2, $matches2 ); // $match blijft op 0 of 1

//geeft als uitput
matches2:
Array
(
    [0] => {CUSTOM|ORDER|Order_id: [order_id]|2}
    [1] => ORDER
    [2] => Order_id: [order_id]
    [3] => 2
)


Maar wat ik zoek is:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Array
(
    [0] => Array
        (
            [0] => {CUSTOM|ORDER|Order_id: [order_id]|2}
            [1] => ORDER
            [2] => Order_id: [order_id]
            [3] => 2
        )

    [1] => Array
        (
            [0] => {CUSTOM|PRODUCT|Naam: [pr_name]<br/>Prijs: [pr_price]|15}
            [1] => PRODUCT
            [2] => Naam: [pr_name]<br/>Prijs: [pr_price]
            [3] => 15
        )
)


Ik heb al verschillende combinaties met (het geheel)* en (het geheel)? geprobeerd, maar dat gaf helaas niets meer terug.

Kan iemand mij aub vertellen hoe ik kan zorgen dat het pattern, wanneer aanwezig in $string2, meerdere malen gematchd wordt?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
preg_match_all ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ah, dus daar is die functie voor. 8)7

Bedankt voor de zeer snelle reactie!

Acties:
  • 0 Henk 'm!

  • Pin0
  • Registratie: November 2002
  • Niet online
Het lijkt er trouwens op dat je een json gecodeerd object probeert te decoderen. Dat kan ook met json_decode.
Maar je hebt de oplossing, en het is maar een gedachte...

Mijn Lego Mocs - LEGO idea: The Motorcycle Garage


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Pin0 schreef op donderdag 06 mei 2010 @ 08:37:
Het lijkt er trouwens op dat je een json gecodeerd object probeert te decoderen. Dat kan ook met json_decode.
Maar je hebt de oplossing, en het is maar een gedachte...
Bedankt!

Ik heb nog nooit gehoord van json_decode, dus ik zal het even gaan bestuderen: http://php.net/manual/en/function.json-decode.php

Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Deze ga ik onthouden, geniaal voorbeeld van taalvermenging:
PHP:
1
//geeft als uitput 
Dit soort dingen overkomen mij ook altijd als ik commentaar ga typen bij code, dus tegenwoordig doe ik het maar english only.
Pagina: 1