themainframe / php-binary
一个用于解析结构化二进制流的PHP库。
v0.2.0
2016-05-18 21:02 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-25 11:24:52 UTC
README
一个用于解析结构化二进制流的PHP库。
文档
文档可以在 文档
目录中找到,也可以在php-binary.damow.net 上找到。
用法
以下是一个示例二进制格式
- 4个字节 的文本。
- 1个字节 无符号整数。
- 一个包含 2个字节 文本的字段,后面跟着一个 1个字节 无符号整数;重复 n 次,其中 n 是对第 2 点中描述的字节的回参考。
编写解析器模式
此格式可以按以下方式解析。在此示例中,模式使用JSON进行描述,以便于理解,但在实践中可以使用任何数组。
$builder = new Binary\SchemaBuilder; $schema = $builder->createFromArray(json_decode(' { "sometext": { "_type": "Text", "size": 4 }, "somebyte": { "_type": "UnsignedInteger", "size": 1 }, "somefields": { "_type": "Compound", "count": "@somebyte", "_fields": { "footext": { "_type": "Text", "size": 2 }, "foobyte": { "_type": "UnsignedInteger", "size": 1 } } } } ', true));
解析流
您可以使用 php-binary 解析通用的字节流,并以符合您模式定义的关联数组输出字段。
$stream = new Binary\Stream\StringStream("FOOO\x03LOLLOMLON"); $result = $schema->readStream($stream);
在 $result
中的结果关联数组(此处以JSON格式展示以便理解)将包含
{ "sometext": "FOOO", "somebyte": 3, "somefields": [ { "footext": "LO", "foobyte": 76 }, { "footext": "LO", "foobyte": 77 }, { "footext": "LO", "foobyte": 78 } ] }