hoa/ustring

此软件包已被废弃,不再维护。没有建议的替代软件包。

Hoa\Ustring 库。

4.17.01.16 2017-01-16 07:08 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)
);

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

要获取字符串的长度,我们可以使用 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 以获取详细信息。