chesszebra/portable-game-notation

一个用于解析和写入棋局的可移植游戏记法(PGN)格式的PHP库。

1.1.1 2022-02-22 21:20 UTC

This package is auto-updated.

Last update: 2024-09-23 03:30:06 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

一个用于解析和写入棋局的可移植游戏记法(PGN)格式的PHP库。

安装

通过composer

composer require chesszebra/portable-game-notation

使用方法

读取

从字符串中读取

从字符串中读取单个PGN棋局

use ChessZebra\PortableGameNotation\Reader\StringReader;

$reader = new StringReader('1. e4 e5');

$tokenIterator = $reader->read();

从流中读取

从流中读取单个PGN棋局

use ChessZebra\PortableGameNotation\Reader\StringReader;

$reader = new StreamReader(fopen('games.pgn', 'r'));

$tokenIterator = $reader->read();

写入

到字符串

将PGN棋局写入字符串

use ChessZebra\PortableGameNotation\TokenIterator;
use ChessZebra\PortableGameNotation\Token\StandardAlgebraicNotation;
use ChessZebra\PortableGameNotation\Writer\StringWriter;
use ChessZebra\StandardAlgebraicNotation\Notation;

$tokenIterator = new TokenIterator([
    new MoveNumber(1),
    new StandardAlgebraicNotation(new Notation('e4')),
]);

$writer = new StringWriter();
$writer->write($tokenIterator);

$pgn = $writer->getPgn();

到流

将PGN棋局写入流

use ChessZebra\PortableGameNotation\TokenIterator;
use ChessZebra\PortableGameNotation\Token\StandardAlgebraicNotation;
use ChessZebra\PortableGameNotation\Writer\Stream;
use ChessZebra\StandardAlgebraicNotation\Notation;

$tokenIterator = new TokenIterator([
    new MoveNumber(1),
    new StandardAlgebraicNotation(new Notation('e4')),
]);

$writer = new Stream(fopen('game.pgn', 'w'));
$writer->write($tokenIterator);

游戏分词

从字符串中读取

use ChessZebra\PortableGameNotation\Lexer\StringLexer;

$lexer = new StringLexer('1. e4');

$token = $lexer->getNextToken();

从资源中

use ChessZebra\PortableGameNotation\Lexer\StreamLexer;

$lexer = new StreamLexer(fopen('my-games.pgn', 'r'));

$token = $lexer->getNextToken();

贡献

请参阅CONTRIBUTINGCONDUCT 获取详细信息。

安全

如果您发现任何安全相关的问题,请通过 HackerOne 报告。

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件