jfcherng/php-mb-string

高性能的多字节字符串实现,适用于频繁的读取/写入操作。

2.0.1 2023-04-17 14:23 UTC

This package is auto-updated.

Last update: 2024-09-18 07:55:40 UTC


README

GitHub Workflow Status (branch) Packagist Packagist Version Project license GitHub stars Donate to this project using Paypal

高性能的多字节字符串实现,适用于频繁的读取/写入操作。

我为什么写这个包?

假设你有一个的多字节字符串,你想要在它上面执行许多以下操作。

  • 随机读取/写入,如$char = $str[5];$str[5] = '许';
  • 替换,如str_replace($search, $replace, $str);
  • 插入,如substr_replace($insert, $str, $position, 0);
  • 获取子串,如substr($str, $start, $length);

因为PHP中的字符串不是UTF-8,为了安全地执行上述操作,你必须使用mb_*()函数或者自己计算索引。频繁使用mb_*()函数可能会造成性能损失,因为它每次调用时都必须根据给定的编码重新解码源字符串。字符串越长,问题越严重。

相反,这个类内部以UTF-32形式存储字符串,它是固定宽度的(1个字符始终占用4个字节),所以我们能够进行快速的随机访问。有了随机访问的能力,我们就可以使用str_*()函数来内部执行这些任务。

安装

composer require jfcherng/php-mb-string

示例

查看tests/MbStringTest.php

基准测试

查看benchmark/_results.txt

你用这个包做什么?

我开发这个包是为了一个PHP diff包,jfcherng/php-diff