hoa / ustring
Hoa\Ustring 库。
Requires
- hoa/consistency: ~1.0
- hoa/exception: ~1.0
Requires (Dev)
- hoa/test: ~2.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: 2021-09-20 08:32:09 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) );
文本方向对于 Hoa\Ustring\Ustring
上的 append
、prepend
、pad
等方法也很重要。
要获取字符串的长度,我们可以使用 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。
获取帮助
主要有两种方式获取帮助
- 在
#hoaproject
IRC 频道中, - 在 users.hoa-project.net 的论坛上。
贡献
你想贡献吗?谢谢!一个详细的 贡献指南解释了你需要知道的一切。
许可
Hoa 采用新的 BSD 许可证 (BSD-3-Clause)。请参阅 LICENSE
以获取详细信息。