hoa/string

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

Hoa\String 库。

2.16.01.11 2016-01-11 09:46 UTC

README

Hoa

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

Hoa\String state

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

警告

此库已弃用,由于新的保留关键字 string,不支持 php >= 7,请使用 Hoa\Ustring

安装

使用 Composer,要将此库包含到依赖项中,您需要要求 hoa/string

{
    "require": {
        "hoa/string": "~2.0"
    }
}

请阅读网站以获取有关如何安装的更多信息

快速使用

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

自然 UTF-8 字符串操作

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

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

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

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

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

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

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

文本方向对于 Hoa\String\String 上的 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\String\String

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

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

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

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

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

搜索算法

Hoa\String\Search 实现了字符串上的搜索算法。

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

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

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

我们会找到 AGATAGATAAATAAGGAGAA

结果不是很方便,但算法优化得很好,并找到了许多应用。

文档

可以在网站上找到不同的文档: http://hoa-project.net/

许可证

Hoa 采用新的 BSD 许可证(BSD-3-Clause)。请参阅 LICENSE