clue / utf8-react
基于 ReactPHP 的流式 UTF-8 解析器。
Requires
- php: >=5.3
- react/stream: ^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4 || ^0.3
Requires (Dev)
- phpunit/phpunit: ^9.6 || ^5.7 || ^4.8.36
- react/stream: ^1.0 || ^0.7
README
基于 ReactPHP 的流式 UTF-8 解析器。
目录
支持我们
我们在开发、维护和更新我们的优秀开源项目上投入了大量的时间。您可以通过 在 GitHub 上成为赞助者 来帮助我们保持工作的高质量。赞助者将获得众多好处,有关详细信息,请参阅我们的 赞助页面。
让我们共同将这些项目提升到新的水平!🚀
用法
序列化器
Sequencer
类可以确保您在从流中读取时只能获取到完整、有效的 UTF-8 字节序列。它包装了一个给定的 ReadableStreamInterface
并通过相同的接口公开其数据。
<?php require __DIR__ . '/vendor/autoload.php'; $stdin = new ReadableResourceStream(STDIN); $stream = new Sequencer($stdin); $stream->on('data', function ($chunk) { var_dump($chunk); });
React 的流会发出数据字符串的块,并且对此编码没有任何假设。这些块不一定代表完整的 UTF-8 字节序列,因为一个序列可能被分成多个块。这个类通过缓冲不完整的序列来重新组装这些序列。
此外,如果您只是消费流,而不是控制生产和确保有效的 UTF-8 数据,它可能包括无效的 UTF-8 字节序列。这个类将序列中的任何无效字节替换为 ?
。这个替换字符可以作为构造函数的第二个参数提供
$stream = new Sequencer($stdin, 'X');
因此,您可以确保从结果流中永远不会得到无效的 UTF-8 字节序列。
请注意,流可能仍然包含 ASCII 控制字符或 ANSI / VT100 控制字节序列,因为它们是有效的 UTF-8。这些二进制数据将保持原样,除非您在稍后的阶段过滤它们。
安装
安装此库的推荐方法是 通过 Composer。 新接触 Composer?
此项目遵循 SemVer。这将安装最新的支持版本
composer require clue/utf8-react:^1.3
有关版本升级的详细信息,请参阅 变更日志。
此项目旨在在任何平台上运行,因此不需要任何 PHP 扩展,并支持在旧版 PHP 5.3 到当前 PHP 8+ 和 HHVM 上运行。强烈建议为此项目使用最新支持的 PHP 版本。
测试
要运行测试套件,您首先需要克隆此存储库,然后通过 Composer 安装所有依赖项
composer install
要运行测试套件,请转到项目根目录并运行
vendor/bin/phpunit
许可证
此项目是在宽松的 MIT 许可证 下发布的。
你知道吗?我提供定制开发服务,并为发布和贡献提供赞助发票。有关详细信息,请联系我 (@clue)。
更多
-
如果您想了解更多关于处理数据流的信息,请参阅底层 react/stream 组件的文档。
-
如果您想处理ASCII控制字符或ANSI / VT100控制字节序列,您可能想在将结果流传递给UTF-8序列器之前,在原始输入流上使用clue/reactphp-term。
-
如果您想显示或检查字节序列,您可能想使用clue/php-hexdump来处理发出的字节序列。