clue/utf8-react

基于 ReactPHP 的流式 UTF-8 解析器。

v1.3.0 2023-12-06 14:52 UTC

This package is auto-updated.

Last update: 2024-09-06 16:53:42 UTC


README

CI status installs on Packagist

基于 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来处理发出的字节序列。