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
}
]
}