yiisoft / strings
Yii 字符串助手
2.4.0
2023-12-22 07:29 UTC
Requires
- php: ^8.0
- ext-mbstring: *
Requires (Dev)
- maglnet/composer-require-checker: ^4.2
- phpunit/phpunit: ^9.5
- rector/rector: ^0.18.3
- roave/infection-static-analysis-plugin: ^1.16
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.30|^5.8
This package is auto-updated.
Last update: 2024-08-26 18:32:11 UTC
README
Yii 字符串
该包提供
StringHelper
,它具有用于处理字符串的静态方法;NumericHelper
,它具有用于处理数字字符串的静态方法;Inflector
提供如toPlural()
或toSlug()
等方法,可以根据给定的字符串派生出新的字符串;WildcardPattern
是一个用于匹配字符串的shell通配符模式;CombinedRegexp
是一个优化多个正则表达式匹配的包装器,而MemoizedCombinedRegexp
是一个装饰器,它缓存CombinedRegexp
的结果以提高匹配速度。
需求
- PHP 8.0 或更高版本。
- PHP 的
mbstring
扩展。
安装
可以使用Composer安装此包
composer require yiisoft/strings
StringHelper 使用
字符串助手方法都是静态的,所以用法如下
echo \Yiisoft\Strings\StringHelper::countWords('Strings are cool!'); // 3
总体上,助手有以下方法组。
字节
- byteLength
- byteSubstring
文件路径
- baseName
- directoryName
子串
- substring
- replaceSubstring
- startsWith
- startsWithIgnoringCase
- endsWith
- endsWithIgnoringCase
- findBetween
- findBetweenFirst
- findBetweenLast
截断
- truncateBegin
- truncateMiddle
- truncateEnd
- truncateWords
- trim
- ltrim
- rtrim
计数
- length
- countWords
小写和大写
- lowercase
- uppercase
- uppercaseFirstCharacter
- uppercaseFirstCharacterInEachWord
URL 友好的 base64
- base64UrlEncode
- base64UrlDecode
其他
- parsePath
- split
NumericHelper 使用
Numeric 助手方法都是静态的,所以用法如下
echo \Yiisoft\Strings\NumericHelper::toOrdinal(3); // 3rd
以下方法可用
- toOrdinal
- normalize
- isInteger
Inflector 使用
echo (new \Yiisoft\Strings\Inflector()) ->withoutIntl() ->toSlug('Strings are cool!'); // strings-are-cool
总体上,inflector 有以下方法组。
复数和单数
- toPlural
- toSingular
转写
- toTransliterated
大小写转换
- pascalCaseToId
- toPascalCase
- toCamelCase
单词和句子
- toSentence
- toWords
- toHumanReadable
类和数据库表
- classToTable
- tableToClass
URLs
- toSlug
WildcardPattern 使用
WildcardPattern
允许简单的POSIX风格字符串匹配。
use \Yiisoft\Strings\WildcardPattern; $startsWithTest = new WildcardPattern('test*'); if ($startsWithTest->match('testIfThisIsTrue')) { echo 'It starts with "test"!'; }
在模式中以下字符是特殊的
\
如果未关闭转义字符的使用,则转义其他特殊字符。*
匹配任何字符串,包括空字符串,但默认情况下不包括分隔符(如/
和\
)。**
匹配任何字符串,包括空字符串和分隔符。?
匹配任何单个字符。[seq]
匹配seq中的任何字符。[a-z]
匹配从a到z的任何字符。[!seq]
匹配不在seq中的任何字符。[[:alnum:]]
匹配 POSIX 风格的字符类。
在调用 match()
之前可以调用 ignoreCase()
以获得不区分大小写的匹配。
use \Yiisoft\Strings\WildcardPattern; $startsWithTest = new WildcardPattern('test*'); if ($startsWithTest ->ignoreCase() ->match('tEStIfThisIsTrue')) { echo 'It starts with "test"!'; }
CombinedRegexp 的使用
CombinedRegexp
优化匹配多个正则表达式。
use \Yiisoft\Strings\CombinedRegexp; $patterns = [ 'first', 'second', '^a\d$', ]; $regexp = new CombinedRegexp($patterns, 'i'); $regexp->matches('a5'); // true – matches the third pattern $regexp->matches('A5'); // true – matches the third pattern because of `i` flag that is applied to all regular expressions $regexp->getMatchingPattern('a5'); // '^a\d$' – the pattern that matched $regexp->getMatchingPatternPosition('a5'); // 2 – the index of the pattern in the array $regexp->getCompiledPattern(); // '~(?|first|second()|^a\d$()())~'
MemoizedCombinedRegexp 的使用
MemoizedCombinedRegexp
将 CombinedRegexp
的结果缓存在内存中。当相同的输入字符串需要多次匹配,或者调用不同的 CombinedRegexp
方法时,这很有用。
use \Yiisoft\Strings\CombinedRegexp; use \Yiisoft\Strings\MemoizedCombinedRegexp; $patterns = [ 'first', 'second', '^a\d$', ]; $regexp = new MemoizedCombinedRegexp(new CombinedRegexp($patterns, 'i')); $regexp->matches('a5'); // Fires `preg_match` inside the `CombinedRegexp`. $regexp->matches('first'); // Fires `preg_match` inside the `CombinedRegexp`. $regexp->matches('a5'); // Does not fire `preg_match` inside the `CombinedRegexp` because the result is cached. $regexp->getMatchingPattern('a5'); // The result is cached so no `preg_match` is fired. $regexp->getMatchingPatternPosition('a5'); // The result is cached so no `preg_match` is fired. // The following code fires only once matching mechanism. if ($regexp->matches('second')) { echo sprintf( 'Matched the pattern "%s" which is on the position "%s" in the expressions list.', $regexp->getMatchingPattern('second'), $regexp->getMatchingPatternPosition('second'), ); }
文档
如果您需要帮助或有问题,Yii 论坛 是一个不错的选择。您还可以查看其他 Yii 社区资源。
许可
Yii 字符串是免费软件。它根据 BSD 许可协议发布。有关更多信息,请参阅 LICENSE
。
由 Yii 软件 维护。