hoa-math-community / ustring
Hoa\Ustring 库。
Requires
- php: ~8.0
- hoa-math-community/consistency: ~3.0
- hoa-math-community/exception: ~3.0
Suggests
- ext-iconv: ext/iconv must be present (or a third implementation) to use Hoa\Ustring::transcode().
- ext-intl: To get a better Hoa\Ustring::toAscii() and Hoa\Ustring::compareTo().
This package is auto-updated.
Last update: 2024-09-17 15:59:56 UTC
README
Hoa 是一套 模块化、可扩展 和 结构化 的 PHP 库。
此外,Hoa 致力于成为工业界和学术界之间的桥梁。
Hoa\Ustring
此库允许使用一些搜索算法轻松地操作 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::LTR(0)或 Hoa\Ustring\Ustring::RTL(1)
var_dump( $french->getDirection(), // int(0) $arabic->getDirection(), // int(1) $japanese->getDirection() // int(0) );
文本方向对于 append、prepend、pad 等方法在 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,迭代是从右到左进行的。
一些静态方法很有帮助,例如 fromCode、toCode 或 isUtf8 在 Hoa\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']); }
我们将找到 AGATA、GATAA、ATAAG 和 GAGAA。
结果不太方便,但算法进行了大量优化,并找到了许多应用。
文档
Hoa\Ustring 的“黑客手册”包含有关如何使用此库及其工作方式的详细信息。
要本地生成文档,请执行以下命令
$ composer require --dev hoa/devtools $ vendor/bin/hoa devtools:documentation --open
更多文档可以在项目的网站上找到: hoa-project.net。
获取帮助
获取帮助主要有两种方式
- 在
#hoaprojectIRC 频道, - 在users.hoa-project.net论坛上。
贡献
你想贡献吗?谢谢!详细的贡献指南解释了你需要知道的一切。
许可
Hoa遵循新BSD许可协议(BSD-3-Clause)。请参阅LICENSE获取详细信息。