Hoa\Ustring 库。

v5.0.0 2022-12-17 12:26 UTC

README

Hoa

Build status Code coverage Packagist License

Hoa 是一套 模块化可扩展结构化 的 PHP 库。
此外,Hoa 致力于成为工业界和学术界之间的桥梁。

Hoa\Ustring

Help on IRC Help on Gitter Documentation Board

此库允许使用一些搜索算法轻松地操作 UTF-8 字符串。

了解更多.

安装

使用 Composer,将此库添加到您的依赖项中,您需要要求 hoa/ustring

$ composer require hoa/ustring '~4.0'

有关更多安装说明,请参阅 源代码页面

测试

在运行测试套件之前,必须安装开发依赖项

$ composer install

然后,要运行所有测试套件

$ vendor/bin/hoa test:run

有关更多信息,请参阅 贡献者指南

快速使用

我们提出了两个用法的快速概述:操作 UTF-8 字符串和一种搜索算法。

自然 UTF-8 字符串操作

Hoa\Ustring\Ustring 类允许以非常自然的方式轻松操作 UTF-8 字符串。此类实现了 \ArrayAccess\Countable\IteratorAggregate 接口。我们将使用以下示例

$french   = new Hoa\Ustring\Ustring('Je t\'aime');
$arabic   = new Hoa\Ustring\Ustring('أحبك');
$japanese = new Hoa\Ustring\Ustring('私はあなたを愛して');

要获取第一个字符,我们将这样做

var_dump(
    $french[0],  // string(1) "J"
    $arabic[0],  // string(2) "أ"
    $japanese[0] // string(3) ""
);

要获取最后一个字符,我们将这样做 [-1]。它支持无界(和模数)索引。

请注意,它注意文本 方向。看 $arabic[0],它返回 أ 而不是 ك。要获取方向,我们可以使用 Hoa\Ustring\Ustring::getDirection 方法(它调用 Hoa\Ustring\Ustring::getCharDirection 静态方法),它返回 Hoa\Ustring\Ustring::LTR0)或 Hoa\Ustring\Ustring::RTL1

var_dump(
    $french->getDirection(),  // int(0)
    $arabic->getDirection(),  // int(1)
    $japanese->getDirection() // int(0)
);

文本方向对于 appendprependpad 等方法在 Hoa\Ustring\Ustring 上的使用也很重要。

要获取字符串的长度,我们可以使用 count 函数

var_dump(
    count($french),  // int(9)
    count($arabic),  // int(4)
    count($japanese) // int(9)
);

我们还可以遍历字符串

foreach ($arabic as $letter) {
    var_dump($letter);
}

/**
 * Will output:
 *     string(2) "أ"
 *     string(2) "ح"
 *     string(2) "ب"
 *     string(2) "ك"
 */

同样,文本方向在这里也很有用。对于 $arabic,迭代是从右到左进行的。

一些静态方法很有帮助,例如 fromCodetoCodeisUtf8Hoa\Ustring\Ustring

var_dump(
    Hoa\Ustring\Ustring::fromCode(0x1a9), // string(2) "Ʃ"
    Hoa\Ustring\Ustring::toCode('Ʃ'),     // int(425) == 0x1a9
    Hoa\Ustring\Ustring::isUtf8('Ʃ')      // bool(true)
);

我们还可以将任何文本转换为 ASCII

$emoji = new Hoa\Ustring\Ustring('I ❤ Unicode');
$maths = new Hoa\Ustring\Ustring('∀ i ∈ ℕ');

echo
    $emoji->toAscii(), "\n",
    $maths->toAscii(), "\n";

/**
 * Will output:
 *     I (heavy black heart) Unicode
 *     (for all) i (element of) N
 */

搜索算法

Hoa\Ustring\Search 在字符串上实现了搜索算法。

例如,Hoa\Ustring\Search::approximated 方法通过近似模式(基于主对角线单调性的 k 差异)进行搜索。如果我们用 1 个差异在 CAGATAAGAGAA 中搜索单词 GATAA,我们将这样做

$search = Hoa\Ustring\Search::approximated(
    $haystack = 'CAGATAAGAGAA',
    $needle   = 'GATAA',
    $k        = 1
);
$solutions = array();

foreach ($search as $pos) {
    $solutions[] = substr($haystack, $pos['i'], $pos['l']);
}

我们将找到 AGATAGATAAATAAGGAGAA

结果不太方便,但算法进行了大量优化,并找到了许多应用。

文档

Hoa\Ustring 的“黑客手册”包含有关如何使用此库及其工作方式的详细信息。

要本地生成文档,请执行以下命令

$ composer require --dev hoa/devtools
$ vendor/bin/hoa devtools:documentation --open

更多文档可以在项目的网站上找到: hoa-project.net

获取帮助

获取帮助主要有两种方式

贡献

你想贡献吗?谢谢!详细的贡献指南解释了你需要知道的一切。

许可

Hoa遵循新BSD许可协议(BSD-3-Clause)。请参阅LICENSE获取详细信息。