Skip to content

pb00068/chessParser

 
 

Repository files navigation

##PGN to PHP array parser PHP class for conversion of Chess PGN files to PHP array or JSON.

This is the chess parser used in DHTML Chess at dhtml-chess.com

####License: LGPL (Lesser General Public License).

Example of use:

<?php
$parser = new PgnParser('my-games.pgn');
echo json_encode($parser->getGames());
?>

This will give you data in this format:

[
    {
        "metadata":{
            "blackelo":"2400",
            "opening":"Grunfeld",
            "time":"10:41:37",
            "variation":"Three Knights Variation",
            "whiteelo":"2400",
            "whitetype":"human",
            "blacktype":"human",
            "castle":1
        },
        "event":"Computer chess game",
        "site":"BORROW-PC",
        "date":"2013.01.19",
        "round":"?",
        "white":"White player",
        "black":"Black player",
        "result":"*",
        "eco":"D90",
        "timecontrol":"300",
        "termination":"unterminated",
        "plycount":"21",
        "fen":"rnbqkbnr\/pppppppp\/8\/8\/8\/8\/PPPPPPPP\/RNBQKBNR w KQkq - 0 1",
        "moves":[
            {
                "m":"e4",
                "from":"e2",
                "to":"e4",
                "fen":"rnbqkbnr\/pppppppp\/8\/8\/4P3\/8\/PPPP1PPP\/RNBQKBNR b KQkq - 0 1"
            },
            {
                "m":"d5",
                "variations":[
                    [
                        {
                            "m":"e5",
                            "comment":"Test comment before",
                            "from":"e7",
                            "to":"e5",
                            "fen":"rnbqkbnr\/pppp1ppp\/8\/4p3\/4P3\/8\/PPPP1PPP\/RNBQKBNR w KQkq - 0 2"
                        },
                        {
                            "m":"Nf3",
                            "comment":"Test comment after",
                            "from":"g1",
                            "to":"f3",
                            "fen":"rnbqkbnr\/pppp1ppp\/8\/4p3\/4P3\/5N2\/PPPP1PPP\/RNBQKB1R b KQkq - 1 2"
                        },
                        {
                            "m":"Nc6",
                            "from":"b8",
                            "to":"c6",
                            "fen":"r1bqkbnr\/pppp1ppp\/2n5\/4p3\/4P3\/5N2\/PPPP1PPP\/RNBQKB1R w KQkq - 2 3"
                        },
                        {
                            "m":"Bc4",
                            "from":"f1",
                            "to":"c4",
                            "fen":"r1bqkbnr\/pppp1ppp\/2n5\/4p3\/2B1P3\/5N2\/PPPP1PPP\/RNBQK2R b KQkq - 3 3"
                        },
                        {
                            "m":"Nf6",
                            "variations":[
                                [
                                    {
                                        "m":"d6",
                                        "from":"d7",
                                        "to":"d6",
                                        "fen":"r1bqkbnr\/ppp2ppp\/2np4\/4p3\/2B1P3\/5N2\/PPPP1PPP\/RNBQK2R w KQkq - 0 4"
                                    },
                                    {
                                        "m":"O-O",
                                        "comment":"(O-O Ng8-f6 Nb1-c3 Nc6-d4 Nf3-g5 d6-d5 e4xd5 h7-h6 Ng5-e4 c7-c6 d5xc6 Nf6xe4 Nc3xe4 b7xc6) +0.48\/11 8",
                                        "from":"e1",
                                        "to":"g1",
                                        "fen":"r1bqkbnr\/ppp2ppp\/2np4\/4p3\/2B1P3\/5N2\/PPPP1PPP\/RNBQ1RK1 b kq - 1 4"
                                    },
                                    {
                                        "m":"Nf6",
                                        "from":"g8",
                                        "to":"f6",
                                        "fen":"r1bqkb1r\/ppp2ppp\/2np1n2\/4p3\/2B1P3\/5N2\/PPPP1PPP\/RNBQ1RK1 w kq - 2 5"
                                    },
                                    {
                                        "m":"Nc3",
                                        "comment":"Last move in variation",
                                        "from":"b1",
                                        "to":"c3",
                                        "fen":"r1bqkb1r\/ppp2ppp\/2np1n2\/4p3\/2B1P3\/2N2N2\/PPPP1PPP\/R1BQ1RK1 b kq - 3 5"
                                    }
                                ]
                            ],
                            "from":"g8",
                            "to":"f6",
                            "fen":"r1bqkb1r\/pppp1ppp\/2n2n2\/4p3\/2B1P3\/5N2\/PPPP1PPP\/RNBQK2R w KQkq - 4 4"
                        },
                        {
                            "m":"O-O",
                            "comment":"Variation ended",
                            "from":"e1",
                            "to":"g1",
                            "fen":"r1bqkb1r\/pppp1ppp\/2n2n2\/4p3\/2B1P3\/5N2\/PPPP1PPP\/RNBQ1RK1 b kq - 5 4"
                        },
                        {
                            "m":"d6",
                            "from":"d7",
                            "to":"d6",
                            "fen":"r1bqkb1r\/ppp2ppp\/2np1n2\/4p3\/2B1P3\/5N2\/PPPP1PPP\/RNBQ1RK1 w kq - 0 5"
                        }
                    ]
                ],
                "from":"d7",
                "to":"d5",
                "fen":"rnbqkbnr\/ppp1pppp\/8\/3p4\/4P3\/8\/PPPP1PPP\/RNBQKBNR w KQkq - 0 2"
            },
            {
                "m":"exd5",
                "comment":"Variation ended",
                "from":"e4",
                "to":"d5",
                "fen":"rnbqkbnr\/ppp1pppp\/8\/3P4\/8\/8\/PPPP1PPP\/RNBQKBNR b KQkq - 0 2"
            },
            {
                "m":"Nf6",
                "from":"g8",
                "to":"f6",
                "fen":"rnbqkb1r\/ppp1pppp\/5n2\/3P4\/8\/8\/PPPP1PPP\/RNBQKBNR w KQkq - 1 3"
            },
            {
                "m":"c4",
                "variations":[
                    [
                        {
                            "m":"Nf3?!",
                            "from":"g1",
                            "to":"f3",
                            "fen":"rnbqkb1r\/ppp1pppp\/5n2\/3P4\/8\/5N2\/PPPP1PPP\/RNBQKB1R b KQkq - 2 3"
                        },
                        {
                            "m":"Qxd5",
                            "from":"d8",
                            "to":"d5",
                            "fen":"rnb1kb1r\/ppp1pppp\/5n2\/3q4\/8\/5N2\/PPPP1PPP\/RNBQKB1R w KQkq - 0 4"
                        },
                        {
                            "m":"Nc3",
                            "from":"b1",
                            "to":"c3",
                            "fen":"rnb1kb1r\/ppp1pppp\/5n2\/3q4\/8\/2N2N2\/PPPP1PPP\/R1BQKB1R b KQkq - 1 4"
                        },
                        {
                            "m":"Qa5",
                            "from":"d5",
                            "to":"a5",
                            "fen":"rnb1kb1r\/ppp1pppp\/5n2\/q7\/8\/2N2N2\/PPPP1PPP\/R1BQKB1R w KQkq - 2 5"
                        },
                        {
                            "m":"d4",
                            "from":"d2",
                            "to":"d4",
                            "fen":"rnb1kb1r\/ppp1pppp\/5n2\/q7\/3P4\/2N2N2\/PPP2PPP\/R1BQKB1R b KQkq - 0 5"
                        }
                    ]
                ],
                "from":"c2",
                "to":"c4",
                "fen":"rnbqkb1r\/ppp1pppp\/5n2\/3P4\/2P5\/8\/PP1P1PPP\/RNBQKBNR b KQkq - 0 3"
            },
            {
                "m":"Bf5",
                "comment":"Variation ended",
                "variations":[
                    [
                        {
                            "m":"Nbd7",
                            "from":"b8",
                            "to":"d7",
                            "fen":"r1bqkb1r\/pppnpppp\/5n2\/3P4\/2P5\/8\/PP1P1PPP\/RNBQKBNR w KQkq - 1 4"
                        },
                        {
                            "m":"Nf3",
                            "from":"g1",
                            "to":"f3",
                            "fen":"r1bqkb1r\/pppnpppp\/5n2\/3P4\/2P5\/5N2\/PP1P1PPP\/RNBQKB1R b KQkq - 2 4"
                        },
                        {
                            "m":"Nb6",
                            "from":"d7",
                            "to":"b6",
                            "fen":"r1bqkb1r\/ppp1pppp\/1n3n2\/3P4\/2P5\/5N2\/PP1P1PPP\/RNBQKB1R w KQkq - 3 5"
                        },
                        {
                            "m":"d4",
                            "from":"d2",
                            "to":"d4",
                            "fen":"r1bqkb1r\/ppp1pppp\/1n3n2\/3P4\/2PP4\/5N2\/PP3PPP\/RNBQKB1R b KQkq d3 0 5"
                        },
                        {
                            "m":"g6",
                            "from":"g7",
                            "to":"g6",
                            "fen":"r1bqkb1r\/ppp1pp1p\/1n3np1\/3P4\/2PP4\/5N2\/PP3PPP\/RNBQKB1R w KQkq - 0 6"
                        },
                        {
                            "m":"Nc3",
                            "from":"b1",
                            "to":"c3",
                            "fen":"r1bqkb1r\/ppp1pp1p\/1n3np1\/3P4\/2PP4\/2N2N2\/PP3PPP\/R1BQKB1R b KQkq - 1 6"
                        },
                        {
                            "m":"Qd6",
                            "from":"d8",
                            "to":"d6",
                            "fen":"r1b1kb1r\/ppp1pp1p\/1n1q1np1\/3P4\/2PP4\/2N2N2\/PP3PPP\/R1BQKB1R w KQkq - 2 7"
                        }
                    ]
                ],
                "from":"c8",
                "to":"f5",
                "fen":"rn1qkb1r\/ppp1pppp\/5n2\/3P1b2\/2P5\/8\/PP1P1PPP\/RNBQKBNR w KQkq - 1 4"
            },
            {
                "m":"Nf3",
                "from":"g1",
                "to":"f3",
                "fen":"rn1qkb1r\/ppp1pppp\/5n2\/3P1b2\/2P5\/5N2\/PP1P1PPP\/RNBQKB1R b KQkq - 2 4"
            }
        ]
    }
]

About

pgn to json/php array parser

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published