zbateson/mb-wrapper

mbstring包装器,在编码转换和字符串操作中提供iconv回退

资助包维护!
zbateson

2.0.0 2024-03-20 01:38 UTC

This package is auto-updated.

Last update: 2024-08-29 22:16:01 UTC


README

具有大量定义别名集的字符集转换和字符串操作包装器。

Tests Code Coverage Scrutinizer Code Quality Total Downloads Latest Stable Version

本项目目标包括

  • 编写良好
  • 尽可能进行测试
  • 尽可能支持广泛的字符集别名

要将其用于项目,请通过composer安装

composer require zbateson/mb-wrapper

PHP 7支持已删除

从mb-wrapper 2.0版本开始,已停止对PHP 7的支持。

要求

mb-wrapper需要PHP 8.0或更高版本。在GitHub Actions上对PHP 8.0、8.1、8.2和8.3进行了测试。

2.0版新增功能

如果iconv转换或对字符串的操作失败,现在将抛出UnsupportedCharsetException异常。

描述

MbWrapper旨在在需要使用mb_*或iconv_*的地方使用。它扫描由mb_list_encodings()返回的支持的字符集,并优先使用mb_*函数,但如果不支持该字符集,则回退到iconv。

为mb_*和iconv维护了一个别名字符集列表,其中对于每个别名都存在支持字符集。这对于邮件和http解析很有用,因为其他系统可能报告mb_*或iconv无法识别的编码。

字符集查找还会删除非字母数字字符,因此UTF8将始终匹配UTF-8等...

使用方法

以下包装方法被公开

  • mb_convert_encoding,使用MbWrapper::convert的iconv
  • mb_substr,使用MbWrapper::getSubstr的iconv_substr
  • mb_strlen,使用MbWrapper::getLength的iconv_strlen
  • mb_check_encoding,使用MbWrapper::checkEncoding的iconv(用于验证)
$mbWrapper = new \ZBateson\MbWrapper\MbWrapper();
$fromCharset = 'ISO-8859-1';
$toCharset = 'UTF-8';

$mbWrapper->convert('data', $fromCharset, $toCharset);
$mbWrapper->getLength('data', 'UTF-8');
$mbWrapper->substr('data', 'UTF-8', 1, 2);

if ($mbWrapper->checkEncoding('data', 'UTF-8')) {
    echo 'Compatible';
}

许可

BSD许可 - 请参阅许可协议