rsaccani / stream-decorators
PHP psr7 流装饰器,用于 MIME 消息部分流
Requires
- php: >=5.4
- ext-mbstring: *
- guzzlehttp/psr7: ^1.0.0
Requires (Dev)
- phpunit/phpunit: ^4.8 || ^5.7 || ^6.5
This package is not auto-updated.
Last update: 2022-04-11 23:11:36 UTC
README
字符集转换和常见邮件格式内容编码的 Psr7 流装饰器。
本项目的目标是
- 编写良好
- 符合标准但宽容的
- 可通过 composer 包含
- 尽可能测试
要将其包含到您的项目中,请通过 composer 安装
composer require zbateson/stream-decorators
要求
StreamDecorators 需要 PHP 5.4 或更高版本或 HHVM。已在 travis 上测试 PHP 5.4、5.5、5.6、7、7.1 和 7.2 以及 HHVM 3.6、3.12、3.24 和 'current'。
使用方法
$stream = GuzzleHttp\Psr7\stream_for($handle); $b64Stream = new ZBateson\StreamDecorators\Base64Stream($stream); $charsetStream = new ZBateson\StreamDecorators\CharsetStream($b64Stream, 'UTF-32', 'UTF-8'); while (($line = GuzzleHttp\Psr7\readline()) !== false) { echo $line, "\r\n"; }
库包含以下 Psr\Http\Message\StreamInterface 实现
- ZBateson\StreamDecorators\QuotedPrintableStream - 读取时解码,写入时编码为 quoted-printable
- ZBateson\StreamDecorators\Base64Stream - 读取时解码,写入时编码为 base64
- ZBateson\StreamDecorators\UUStream - 读取时解码,写入时编码为 uu-encoded
- ZBateson\StreamDecorators\CharsetStream - 读取时从 $streamCharset 编码到 $stringCharset,写入时相反
- ZBateson\StreamDecorators\NonClosingStream - 覆盖 close() 和 detach(),简单地取消绑定流而不关闭它
- ZBateson\StreamDecorators\ChunkSplitStream - 将写入的字符分割成 $lineLength 长的行(php 的 chunk_split 流实现)
- ZBateson\StreamDecorators\PregReplaceFilterStream - 在每次 read() 调用上使用传递的参数调用 preg_replace
- ZBateson\StreamDecorators\SeekingLimitStream - 与 GuzzleHttp 的 LimitStream 类似,但维护内部当前读取位置,在 read() 调用中定位到它,并在读取后回到包装流的当前位置
QuotedPrintableStream、Base64Stream 和 UUStream 的构造函数接受一个 StreamInterface 参数。CharsetStreams 的构造函数也分别接受 $streamCharset 和 $stringCharset 作为参数,ChunkSplitStream 可选地接受一个 $lineLength 参数(默认为 76)和一个 $lineEnding 参数(默认为 CRLF)。PregReplaceFilterStream 接受一个 $pattern 参数和一个 $replacement 参数。SeekingLimitStream 接受可选的 $limit 和 $offset 参数,类似于 GuzzleHttp 的 LimitStream。
此外,该库还公开了一个 ZBateson\StreamDecorators\Util\CharsetConverter 类,它提供了以下功能
- 支持的不同名称(别名)的字符集映射
- 更好的字符集查找(在查找过程中删除特殊字符等),以捕获可能在 Content-Type 标头中找到的更多字符集
- 以下 mb_* 和 iconv 函数的抽象,优先使用 mb_* 支持的字符集
- mb_convert_encoding、iconv 使用 CharsetConverter::convert
- mb_substr、iconv_substr 使用 CharsetConverter::getSubstr
- mb_strlen、iconv_strlen 使用 CharsetConverter::getLength
许可
BSD 许可 - 请参阅 许可协议。