conkal/ztring

字符串操作库

v1.0.0 2021-07-08 09:32 UTC

This package is auto-updated.

Last update: 2024-09-08 17:12:22 UTC


README

Latest Stable Version License Total Downloads Build

一个PHP字符串操作库。

安装

composer require conkal/ztring
use Conkal\ztring;

面向对象和链式调用

该库提供了面向对象的链式调用方法,如下所示

use Conkal\ztring;
echo ztring('this is test')->collapseWhitespace()->swapCase(); // THIS IS TEST

Conkal\ztring 有一个 __toString() 方法,当对象在字符串上下文中使用时,返回当前字符串,即: (string) ztring::create('foo') // 'foo'

实现接口

Conkal\ztring 实现了 IteratorAggregate 接口,这意味着可以使用类的实例进行 foreach 循环。

$string = \Conkal\ztring::create('test');
foreach ($string as $char) {
    echo $char;
}
// 'test'

它还实现了 Countable 接口,可以使用 count() 获取字符串中的字符数。

$string = \Conkal\ztring::create('test');
count($string);  // 3

此外,实现了 ArrayAccess 接口。因此,可以使用 isset() 检查特定索引处的字符是否存在。由于 Conkal\ztring 是不可变的,因此对 offsetSetoffsetUnset 的调用将抛出异常。已实现 offsetGet,它接受正索引和负索引。无效索引会导致 OutOfBoundsException

$string = \Conkal\ztring::create('test');
echo $string[1];     // 't'

类方法

create(string $str)

创建一个 ztring 对象,并分配字符串属性。在分配之前,$str 被转换为字符串。

$string = \Conkal\ztring::create('test'); // 'test'

实例方法

append(string $string)

返回一个新的字符串,其中包含附加的 $string。

ztring('This is a ')->append('test.'); // This is a test.
at(int $index)

返回 $index 处的字符,索引从 0 开始。

ztring('This is a test')->at(0); // 'T'
ztring('This is a test')->at(1); // 'h'
ztring('This is a test')->at(-1); // 't'
camelcase()

返回字符串的 camelCase 版本。修剪周围的空格,将数字、空格、破折号和下划线后的字母大写,并删除空格、破折号和下划线。

ztring('Camel-Case')->camelcase(); // 'camelCase'
chars()

返回一个由字符串中的字符组成的数组。

ztring('test')->chars(); // ['t','e','s','t']
collapseWhitespace()

修剪字符串,并将连续的空白字符替换为单个空格。这包括制表符和换行符,以及多字节空白,如细空格和表意空格。

ztring('This   is a               test')->collapseWhitespace(); // 'This is a test'
endsWith(string $substring [, boolean $caseSensitive = true ])

如果字符串以 $substring 结尾,则返回 true,否则返回 false。默认情况下,比较是区分大小写的,但可以通过将 $caseSensitive 设置为 false 来使比较不区分大小写。

ztring('this is a test')->endsWith('test'); // true
ensureLeft(string $substring)

确保字符串以 $substring 开始。如果不这样做,它会添加前缀。

ztring('foobar')->ensureLeft('http://'); // 'http://foobar'
ensureRight(string $substring)

确保字符串以 $substring 结尾。如果不这样做,它会添加后缀。

ztring('foobar')->ensureRight('.com'); // 'foobar.com'
firstChar()

返回字符串的前 $n 个字符。

ztring('test')->firstChar(); // 't'
firstXChars()

返回字符串的前 $n 个字符。

ztring('test')->first3Chars(); // 'tes'
lastChar()

返回字符串的最后 $n 个字符。

ztring('test')->lastChar(); // 't'
lastXChars()

返回字符串的最后 $n 个字符。

ztring('test')->last3Chars(); // 'est'
length()

返回字符串的长度。PHP 的 mb_strlen() 函数的别名。

ztring('fòôbàř')->length(); // 6
lowerCaseFirst()

将提供的字符串的第一个字符转换为小写。

ztring('Test')->lowerCaseFirst(); // 'test'
prepend(string $string)

返回以 $string 开头的字符串。

ztring('bàř')->prepend('fòô'); // 'fòôbàř'
removeLeft(string $substring)

返回一个新字符串,其中已移除前缀 $substring(如果存在)。

replace(string $search, string $replacement)

将 $str 中所有出现的 $search 替换为 $replacement。

ztring('This is test.')->replace('This ', 'These '); // 'These is test.'
reverse()

返回一个反转的字符串。strrev() 的多字节版本。

ztring('fòôbàř')->reverse(); // 'řàbôòf'
random()

创建一个随机字符串

\Conkal\ztring::random(); 
slug( [string $separator = '-'])
ztring('This is a testğüşçö')->slug(); // 'this-is-a-test'
startsWith(string $substring [, boolean $caseSensitive = true ])

如果字符串以 $substring 开始,则返回 true,否则返回 false。默认情况下,比较是区分大小写的,但可以通过将 $caseSensitive 设置为 false 来使比较不区分大小写。

ztring('This is a test')->startsWith('This', false); // true
substr(int $start [, int $length ])

从指定位置 $start 开始返回长度为 $length 的子字符串。与 mb_substr() 函数不同,如果提供 $length 为 null,则返回字符串的剩余部分,而不是空字符串。

ztring('This is a test')->substr(0, 4); // 'This'
swapCase()

返回字符串的大小写交换版本。

ztring('Test')->swapCase(); // 'tEST'
titleCase()

返回一个首字母大写的修剪后的字符串。

ztring('this is a test')->titleCase();
// 'This Is A Test'
ascii($languageSpecific)

返回字符串的 ASCII 版本。

  $languageSpecific = [
            'ğ' => 'g',
            'ü' => 'u',
            'ı' => 'i',
            'ş' => 's',
            'ç' => 'c',
            'ö' => 'o',
            'Ğ' => 'G',
            'Ü' => 'U',
            'Ş' => 'S',
            'Ö' => 'O',
            'Ç' => 'C',
            'İ' => 'I',
        ];
ztring('türkçe')->ascii($languageSpecific); // 'turkce'
toBoolean()

返回给定逻辑字符串值的布尔表示形式。例如,'true'、'1'、'on' 和 'yes' 将返回 true。'false'、'0'、'off' 和 'no' 将返回 false。在所有情况下,大小写将被忽略。

ztring('OFF')->toBoolean(); // false
toLowerCase()

将字符串中的所有字符转换为小写。PHP 的 mb_strtolower() 的别称。

ztring('THIS')->lowerCase(); // 'this'
toTitleCase()

将字符串中每个单词的第一个字符转换为大写。

ztring('this is a test')->titleCase(); // 'Fòô Bàř'
uppercase()

将字符串中的所有字符转换为大写。PHP 的 mb_strtoupper() 的别称。

ztring('test')->uppercase(); // 'TEST'
trim([, string $chars])

返回一个从字符串的开始和结束处移除空白的字符串。支持移除 Unicode 空白。接受一个可选的字符字符串,用于替代默认值。

ztring('  test  ')->trim(); // 'test'
upperCaseFirst()

将提供的字符串的第一个字符转换为大写。

ztring('this is a test')->upperCaseFirst(); // 'This is a test'
words()

返回数组形式的单词。

ztring('this is a test')->words(); // ['This', 'is', 'a', 'test']
sanitize()

移除所有特殊字符。

ztring('this is a test?--*üğişçö')->sanitize(); // 'this is a test'
acronym()

创建一个缩写。

ztring('This is a test')->acronym(); // 'TIAT'
ztring('This is a test')->acronym('.'); // 'T.I.A.T.'
number()

仅返回 0-9 之间的数字。

ztring('1---*?=)(2hjkghkj,iüğ\ş3/*-')->number(); //123

测试

从项目目录中,可以使用 phpunit 运行测试。

许可协议

在 MIT 许可证下发布 - 有关详细信息,请参阅 LICENSE.txt