Ik heb een vraagje in verband met de variaties in een PGN file (schaak file).

Momenteel zet ik alle zetten in een aparte array met behulp van preg_match_all.
Maar nu moet ik nog weten waar en wanneer een variatie, sub-variatie zich voordoet (wanneer er dus ronde haakjes zijn) en welke zet hiervoor gespeeld werd.

vb aan de hand van volgende pgn code.

De eerste keer dat de haakjes opengaan bij 7... O-O is de vorige zet waar ik naar wil kijken "g4". Want de O-O is een variatie op Nxg4. Maar het kan dus ook zijn dat het er niet juist naast staat, zoals bij de 2de variatie 7... dxc4. Hier wil ik dus ook weer weten dat "g4" de vorige zet was. Ik wil dus eigenlijk weten dat de vorige zet, zet "13" is. Zo ook bij het sluiten van de haakjes. Bijvoorbeeld helemaal op het einde. Dan moet ik kunnen zien dat de vorige zet NxG4 (zet 14) was.

Kan iemand mij hier bij helpen ?

Code:
1. d4 d5 2. c4 e6 3. Nc3 c6 4. e3 Nf6 5. Nf3 Nbd7 6. Qc2
Bd6 7. g4 Nxg4 (7... O-O 8. g5 Nh5 9. Bd2) (7... dxc4 8. g5 (8. e4 e5 9. g5 exd4 10. Nxd4 Ng4 11.
h3 Nge5 12. Be3 Nc5) (8. Bxc4 Nxg4 9. Rg1 h5 10. h3 Nh6 11. e4 (11. Rxg7 Qf6 12. Rh7 Rxh7
13. Qxh7 Qxf3 14. Qxh6) 11... Kf8) 8... Nd5 9. Bxc4 b5 10. Be2 (10. Bf1
Bb7 11. e4 Nxc3 12. bxc3 e5) (10. Bxd5 cxd5 11. Nxb5 Qa5+ 12. Nc3
Ba6) 10... Bb7 (10... Nxc3 11. bxc3 Bb7 12. e4 e5 13. Be3 Qe7 14.
a4 a6 15. O-O O-O) 11. e4 Nf4
12. Bd1 e5 13. Nxe5 Bxe5 14. dxe5 Nxe5) 8. Rg1 h5