voku/stringy

支持多字节的字符串操作库


README

SWUbanner

Build Status codecov.io Codacy Badge Latest Stable Version Total Downloads License Donate to this project using Paypal Donate to this project using Patreon

🉑 Stringy

一个支持多字节的PHP字符串操作库。与PHP 7+兼容。

100% 兼容原始的 "Stringy" 库,但此分支针对性能进行了优化,并使用了PHP 7+的新特性。

s('string')->toTitleCase()->ensureRight('y') == 'Stringy'

为什么?

部分原因是因为PHP的许多标准字符串函数不支持多字节(包括UTF-8)。但同时也为了提供一个面向对象的包装,用于mbstring模块的多字节兼容函数。Stringy处理一些怪癖,提供额外的功能,并希望使字符串操作变得更简单!

// Standard library
strtoupper('fòôbàř');       // 'FòôBàř'
strlen('fòôbàř');           // 10

// mbstring
mb_strtoupper('fòôbàř');    // 'FÒÔBÀŘ'
mb_strlen('fòôbàř');        // '6'

// Stringy
$stringy = Stringy\Stringy::create('fòôbàř');
$stringy->toUpperCase();    // 'FÒÔBÀŘ'
$stringy->length();         // '6'

替代方案

如果您喜欢更函数式的字符串编辑方式,可以查看 voku/portable-utf8,同时 "voku/Stringy" 也使用了 "Portable UTF-8" 类的函数,但以更面向对象的方式实现。

// Portable UTF-8
use voku\helper\UTF8;
UTF8::strtoupper('fòôbàř');    // 'FÒÔBÀŘ'
UTF8::strlen('fòôbàř');        // '6'

通过 "composer require" 安装

composer require voku/stringy

通过composer(手动)安装

如果您使用Composer管理依赖关系,可以在您的composer.json文件中包含以下内容

"require": {
    "voku/stringy": "~6.0"
}

然后,运行 composer updatephp composer.phar update 之后,您可以使用Composer的自动加载功能加载该类

require 'vendor/autoload.php';

否则,您可以直接要求该文件

require_once 'path/to/Stringy/src/Stringy.php';

在两种情况下,我建议使用别名。

use Stringy\Stringy as S;

面向对象和链式操作

该库提供了如下的面向对象方法链式操作

use Stringy\Stringy as S;
echo S::create('fòô     bàř')->collapseWhitespace()->swapCase(); // 'FÒÔ BÀŘ'

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

实现的接口

Stringy\Stringy 实现了 IteratorAggregate 接口,这意味着可以使用 foreach 与该类的实例一起使用

$stringy = S::create('fòôbàř');
foreach ($stringy as $char) {
    echo $char;
}
// 'fòôbàř'

它实现了 Countable 接口,允许使用 count() 来检索字符串中的字符数

$stringy = S::create('fòô');
count($stringy);  // 3

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

$stringy = S::create('bàř');
echo $stringy[2];     // 'ř'
echo $stringy[-2];    // 'à'
isset($stringy[-4]);  // false

$stringy[3];          // OutOfBoundsException
$stringy[2] = 'a';    // Exception

PHP类调用创建

从PHP 5.6+开始,可以使用 use function 导入函数。Stringy暴露了一个命名空间函数,Stringy\create,它产生与 Stringy\Stringy::create() 相同的行为。

use function Stringy\create as s;

// Instead of: S::create('fòô     bàř')
s('fòô     bàř')->collapseWhitespace()->swapCase();

类方法

create(mixed $str [, $encoding ])

创建一个Stringy对象,并将提供的值分配给str和encoding属性。在赋值之前,$str将被转换为字符串,如果未指定$encoding,则默认为mb_internal_encoding()。然后返回初始化后的对象。如果第一个参数是一个没有__toString方法的数组或对象,则抛出InvalidArgumentException。

$stringy = S::create('fòôbàř', 'UTF-8'); // 'fòôbàř'

如果您需要一个Stringy对象的集合,可以使用S::collection()方法。

$stringyCollection = \Stringy\collection(['fòôbàř', 'lall', 'öäü']);

实例方法

Stringy对象是不可变的。以下所有示例都使用了PHP 5.6函数导入和PHP 5.4简化的数组语法。它们还假设由mb_internal_encoding()返回的编码是UTF-8。有关更多信息,请参阅上面创建方法的文档。

after(string $string): static

返回字符串中特定字符串之后的部分。

示例: s('宮本 茂')->after('本'); // ' 茂'

参数

  • string $string <p>分隔字符串。</p>

返回

  • static

afterFirst(string $separator): static

获取分隔符首次出现后的子串。

如果没有找到匹配项,则返回新的空Stringy对象。

示例: s('')->afterFirst('b'); // '>'

参数

  • string $separator

返回

  • static

afterFirstIgnoreCase(string $separator): static

获取分隔符首次出现后的子串。

如果没有找到匹配项,则返回新的空Stringy对象。

示例: s('')->afterFirstIgnoreCase('b'); // '>'

参数

  • string $separator

返回

  • static

afterLast(string $separator): static

获取分隔符最后一次出现后的子串。

如果没有找到匹配项,则返回新的空Stringy对象。

示例: s('')->afterLast('b'); // '>'

参数

  • string $separator

返回

  • static

afterLastIgnoreCase(string $separator): static

获取分隔符最后一次出现后的子串。

如果没有找到匹配项,则返回新的空Stringy对象。

示例: s('')->afterLastIgnoreCase('b'); // '>'

参数

  • string $separator

返回

  • static

append(string $suffix): static

返回一个新字符串,其中附加了$suffix。

示例: s('fòô')->append('bàř'); // 'fòôbàř'

参数

  • string ...$suffix <p>要附加的字符串。</p>

返回

  • static <p>带有附加$suffix的对象。</p>

appendPassword(int $length): static

附加密码(限于可读性好的字符)。

示例: s('')->appendPassword(8); // e.g.: '89bcdfgh'

参数

  • int $length <p>随机字符串的长度。</p>

返回

  • static <p>带有附加密码的对象。</p>

appendRandomString(int $length, string $possibleChars): static

附加一个随机字符串。

示例: s('')->appendUniqueIdentifier(5, 'ABCDEFGHI'); // e.g.: 'CDEHI'

参数

  • int $length <p>随机字符串的长度。</p>
  • string $possibleChars [optional] <p>随机选择的字符字符串。</p>

返回

  • static <p>带有附加随机字符串的对象。</p>

appendStringy(\CollectionStringy|static $suffix): static

返回一个新字符串,其中附加了$suffix。

示例:

参数

  • CollectionStringy<int, static>|static ...$suffix <p>要附加的Stringy对象。</p>

返回

  • static <p>带有附加$suffix的对象。</p>

appendUniqueIdentifier(int|string $entropyExtra, bool $md5): static

附加一个唯一标识符。

示例: s('')->appendUniqueIdentifier(); // e.g.: '1f3870be274f6c49b3e31a0c6728957f'

参数

  • int|string $entropyExtra [optional] <p>通过字符串或整数值提供的额外熵。</p>
  • bool $md5 [optional] <p>将唯一标识符作为md5散列返回?默认:true</p>

返回

  • static <p>带有附加唯一标识符(作为md5散列)的对象。</p>

at(int $index): static

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

示例: s('fòôbàř')->at(3); // 'b'

参数

  • int $index <p>字符的位置。</p>

返回

  • static <p>索引为$index的字符。</p>

base64Decode(): self

解码base64编码的字符串。

示例:

参数:

返回

  • self

base64Encode(): self

将字符串编码为base64。

示例:

参数:

返回

  • self

bcrypt(int[]|string[] $options): 静态

使用CRYPT_BLOWFISH算法从字符串创建哈希。

警告:使用此算法会导致 $this->str 截断为最多72个字符。

示例:

参数

  • array $options [可选] <p>bcrypt哈希选项的数组。</p>

返回

  • static

before(string $string): 静态

返回字符串中在特定字符串之前的部分。

示例:

参数

  • string $string <p>分隔字符串。</p>

返回

  • static

beforeFirst(string $separator): 静态

获取分隔符第一次出现之前的子串。

如果没有找到匹配项,则返回新的空Stringy对象。

示例: s('')>beforeFirst('b'); // '</'

参数

  • string $separator

返回

  • static

beforeFirstIgnoreCase(string $separator): 静态

获取分隔符第一次出现之前的子串。

如果没有找到匹配项,则返回新的空Stringy对象。

示例: s('')>beforeFirstIgnoreCase('b'); // '</'

参数

  • string $separator

返回

  • static

beforeLast(string $separator): 静态

获取分隔符最后一次出现之前的子串。

如果没有找到匹配项,则返回新的空Stringy对象。

示例: s('')>beforeLast('b'); // '</'

参数

  • string $separator

返回

  • static

beforeLastIgnoreCase(string $separator): 静态

获取分隔符最后一次出现之前的子串。

如果没有找到匹配项,则返回新的空Stringy对象。

示例: s('')>beforeLastIgnoreCase('b'); // '</'

参数

  • string $separator

返回

  • static

between(string $start, string $end, int $offset): 静态

如果找到,返回 $start 和 $end 之间的子串,否则返回空字符串。可以提供一个可选的偏移量,从该偏移量开始搜索起始字符串。

示例: s('{foo} and {bar}')>between('{', '}'); // 'foo'

参数

  • string $start <p>标记子串起始的分隔符。</p>
  • string $end <p>标记子串结束的分隔符。</p>
  • int $offset [可选] <p>开始搜索的索引。默认:0</p>

返回

  • static <p>具有 $str 在 $start 和 $end 之间子串的对象。</p>

callUserFunction(callable $function, mixed $parameter): 静态

调用一个用户函数。

示例: S::create('foo bar lall')>callUserFunction(static function ($str) { return UTF8::str_limit($str, 8); })>toString(); // "foo bar…"

参数

  • callable $function
  • mixed ...$parameter

返回

  • static <p>通过 $function 改变 $str 的对象。</p>

camelize(): 静态

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

示例: s('Camel-Case')>camelize(); // 'camelCase'

参数:

返回

  • static <p>具有 $str 在 camelCase 中的对象。</p>

capitalizePersonalName(): 静态

返回字符串,每个单词的首字母大写,除了那些不应该大写的名字。

示例: s('jaap de hoop scheffer')>capitalizePersonName(); // 'Jaap de Hoop Scheffer'

参数:

返回

  • static <p>具有 $str 大写的对象。</p>

chars(): string[]

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

示例: s('fòôbàř')>chars(); // ['f', 'ò', 'ô', 'b', 'à', 'ř']

参数:

返回

  • string[] <p>字符串字符的数组。</p>

chunk(int $length): 静态[]

将字符串拆分为Stringy对象的块。

示例: s('foobar')>chunk(3); // ['foo', 'bar']

参数

  • int $length [optional] <p>每个数组元素的字符最大长度。</p>

返回

  • static[] <p>Stringy对象的数组。</p>

chunkCollection(int $length): CollectionStringy|static[]

将字符串分割成Stringy对象集合的块。

示例:

参数

  • int $length [optional] <p>每个数组元素的字符最大长度。</p>

返回

  • \CollectionStringy|static[] <p>Stringy对象的集合。</p>

collapseWhitespace(): static

去除字符串两端的空格,并将连续的空白字符替换为单个空格。这包括制表符、换行符以及多字节空白字符,如细空格和汉字空格。

EXAMPLE: s(' Ο συγγραφέας ')->collapseWhitespace(); // 'Ο συγγραφέας'

参数:

返回

  • static <p>一个经过修剪的 $str 和压缩空白的对象。</p>

contains(string $needle, bool $caseSensitive): bool

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

EXAMPLE: s('Ο συγγραφέας είπε')->contains('συγγραφέας'); // true

参数

  • string $needle <p>要查找的子串。</p>
  • bool $caseSensitive [optional] <p>是否强制执行大小写敏感。默认:true</p>

返回

  • bool <p>是否 $str 包含 $needle。</p>

containsAll(string[] $needles, bool $caseSensitive): bool

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

EXAMPLE: s('foo & bar')->containsAll(['foo', 'bar']); // true

参数

  • string[] $needles <p>要查找的子串。</p>
  • bool $caseSensitive [optional] <p>是否强制执行大小写敏感。默认:true</p>

返回

  • bool <p>是否 $str 包含 $needle。</p>

containsAny(string[] $needles, bool $caseSensitive): bool

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

EXAMPLE: s('str contains foo')->containsAny(['foo', 'bar']); // true

参数

  • string[] $needles <p>要查找的子串。</p>
  • bool $caseSensitive [optional] <p>是否强制执行大小写敏感。默认:true</p>

返回

  • bool <p>是否 $str 包含 $needle。</p>

containsBom(): bool

检查字符串是否以 "BOM"(字节顺序标记字符)字符开头。

EXAMPLE: s("\xef\xbb\xbf foobar")->containsBom(); // true

参数:

返回

  • bool <strong>true</strong> 如果字符串在开头有 BOM,<br> <strong>false</strong> 否则

count(): int

返回字符串的长度,实现可计数接口。

示例:

参数:

返回

  • int <p>根据编码的字符串中的字符数。</p>

countSubstr(string $substring, bool $caseSensitive): int

返回给定字符串中 $substring 出现的次数。

默认情况下,比较是区分大小写的,但可以通过将 $caseSensitive 设置为 false 来使比较不区分大小写。

EXAMPLE: s('Ο συγγραφέας είπε')->countSubstr('α'); // 2

参数

  • string $substring <p>要搜索的子串。</p>
  • bool $caseSensitive [optional] <p>是否强制执行大小写敏感。默认:true</p>

返回

  • int

crc32(): int

计算字符串的 crc32 多项式。

示例:

参数:

返回

  • int

create(mixed $str, string $encoding): static

创建一个 Stringy 对象,并将 str 和 encoding 属性分配给提供的值。在分配之前将 $str 转换为字符串,如果未指定 $encoding,则默认为 mb_internal_encoding()。然后返回初始化的对象。如果第一个参数是数组或没有 __toString 方法的对象,则抛出 InvalidArgumentException。

参数

  • mixed $str [optional] <p>要修改的值,在赋值之前被转换为字符串。默认:''</p>
  • string $encoding [optional] <p>字符编码。默认值: 'UTF-8'</p>

返回

  • static <p>一个 Stringy 对象。</p>

crypt(string $salt): static

单向字符串加密(散列)。

使用标准的基于 Unix DES 的算法或系统上可能可用的替代算法对字符串进行散列。

PS:如果您需要加密/解密,请使用 static::encrypt($password)static::decrypt($password)

示例:

参数

  • string $salt <p>基于散列的盐字符串。</p>

返回

  • static

dasherize(): static

返回由连字符分隔的、小写且已去除首尾空白的字符串。连字符插入到每个大写字母之前(除了字符串的第一个字符),以及空格和下划线的位置。

示例: s('fooBar')->dasherize(); // 'foo-bar'

参数:

返回

  • static <p>包含散列化后的 $str 的对象。</p>

decrypt(string $password): static

解密字符串。

示例:

参数

  • string $password <p>解密的关键。</p>

返回

  • static

delimit(string $delimiter): static

返回由指定分隔符分隔的、小写且已去除首尾空白的字符串。

分隔符插入到每个大写字母之前(除了字符串的第一个字符),以及空格、连字符和下划线的位置。字母分隔符不会被转换为小写。

示例: s('fooBar')->delimit('::'); // 'foo::bar'

参数

  • string $delimiter <p>用于分隔字符串部分的序列。</p>

返回

  • static <p>包含分隔后的 $str 的对象。</p>

encode(string $new_encoding, bool $auto_detect_encoding): static

将指定的字符串编码为给定的 $encoding,并设置内部字符编码。

示例:

参数

  • string $new_encoding <p>所需的字符编码。</p>
  • bool $auto_detect_encoding [optional] <p>自动检测当前字符串编码。</p>

返回

  • static

encrypt(string $password): static

加密字符串。

示例:

参数

  • string $password <p>加密的关键。</p>

返回

  • static

endsWith(string $substring, bool $caseSensitive): bool

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

示例: s('fòôbàř')->endsWith('bàř', true); // true

参数

  • string $substring <p>要查找的子字符串。</p>
  • bool $caseSensitive [optional] <p>是否强制执行大小写敏感。默认:true</p>

返回

  • bool <p>$str 是否以 $substring 结尾。</p>

endsWithAny(string[] $substrings, bool $caseSensitive): bool

如果字符串以任何 $substrings 结尾,则返回 true,否则返回 false。

默认情况下,比较是区分大小写的,但可以通过将 $caseSensitive 设置为 false 来使比较不区分大小写。

示例: s('fòôbàř')->endsWithAny(['bàř', 'baz'], true); // true

参数

  • string[] $substrings <p>要查找的子字符串数组。</p>
  • bool $caseSensitive [optional] <p>是否强制执行大小写敏感。默认:true</p>

返回

  • bool <p>$str 是否以 $substring 结尾。</p>

ensureLeft(string $substring): static

确保字符串以 $substring 开头。如果它没有,则添加前缀。

示例: s('foobar')->ensureLeft('http://'); // 'http://foobar'

参数

  • string $substring <p>如果不存在,要添加的子字符串。</p>

返回

  • static <p>在其 $str 前缀了 $substring 的对象。</p>

ensureRight(string $substring): static

确保字符串以 $substring 结尾。如果它没有,则添加后缀。

示例: s('foobar')->ensureRight('.com'); // 'foobar.com'

参数

  • string $substring <p>如果不存在,要添加的子字符串。</p>

返回

  • static <p>在其 $str 后缀了 $substring 的对象。</p>

escape(): static

通过 "htmlspecialchars()" 创建字符串的转义HTML版本。

示例: s('<∂∆ onerror="alert(xss)">')->escape(); // '<∂∆ onerror="alert(xss)">'

参数:

返回

  • static

explode(string $delimiter, int $limit): array

通过字符串分割字符串。

示例:

参数

  • string $delimiter <p>分隔符字符串</p>

  • `int $limit [可选]

    分割集合中元素的最大数量。

  • 如果设置了limit并且为正数,返回的集合将包含最多limit个元素,最后一个元素包含剩余的字符串。

  • 如果limit参数为负数,则返回除最后一个-limit之外的所有组件。

  • 如果limit参数为零,则视为1`

返回

  • array

explodeCollection(string $delimiter, int $limit): CollectionStringy|static[]

通过字符串分割字符串。

示例:

参数

  • string $delimiter <p>分隔符字符串</p>

  • `int $limit [可选]

    分割集合中元素的最大数量。

  • 如果设置了limit并且为正数,返回的集合将包含最多limit个元素,最后一个元素包含剩余的字符串。

  • 如果limit参数为负数,则返回除最后一个-limit之外的所有组件。

  • 如果limit参数为零,则视为1`

返回

  • \CollectionStringy|static[] <p>Stringy对象的集合。</p>

extractIntegers(): static

返回当前字符串的整数值。

示例: s('foo1 ba2r')->extractIntegers(); // '12'

参数:

返回

  • static

extractSpecialCharacters(): static

返回当前字符串的特殊字符。

示例: s('foo1 ba2!r')->extractSpecialCharacters(); // '!'

参数:

返回

  • static

extractText(string $search, int|null $length, string $replacerForSkippedText): static

从句子中创建一个提取内容,如果找到了搜索字符串,则在输出中尝试居中。

示例: $sentence = 'This is only a Fork of Stringy, take a look at the new features.'; s($sentence)->extractText('Stringy'); // '...Fork of Stringy...'

参数

  • string $search
  • int|null $length [可选] <p>默认:null === text->length / 2</p>
  • string $replacerForSkippedText [可选] <p>默认:…</p>

返回

  • static

first(int $n): static

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

示例: s('fòôbàř')->first(3); // 'fòô'

参数

  • int $n <p>从开始处检索的字符数.</p>

返回

  • static <p>具有其 $str 包含前 $n 个字符的对象.</p>

format(mixed $args): static

通过 sprintf + 数组语法通过命名参数返回格式化的字符串。


它将使用 "sprintf()" 因此您可以使用例如。

s('There are %d monkeys in the %s')->format(5, 'tree');


s('There are %2$d monkeys in the %1$s')->format('tree', 5);


但您也可以使用数组语法通过命名参数例如。

s('There are %:count monkeys in the %:location')->format(['count' => 5, 'location' => 'tree');

示例: $input = 'one: %2$d, %1$s: 2, %:text_three: %3$d'; s($input)->format(['text_three' => '%4$s'], 'two', 1, 3, 'three'); // 'One: 1, two: 2, three: 3'

参数

  • mixed ...$args [可选]

返回

  • static <p>根据格式化字符串格式产生的 Stringy 对象.</p>

getEncoding(): string

返回 Stringy 对象使用的编码。

示例: s('fòôbàř', 'UTF-8')->getEncoding(); // 'UTF-8'

参数:

返回

  • string <p>$encoding 属性的当前值.</p>

getIterator(): ArrayIterator

返回一个新的 ArrayIterator,从而实现 IteratorAggregate 接口。ArrayIterator 的构造函数传递一个多字节字符串中的字符数组。这允许使用 foreach 与 Stringy\Stringy 实例。

示例:

参数:

返回

  • \ArrayIterator <p>字符串中的字符迭代器.</p>

hardWrap(int $width, string $break): static

在确切的字符数后包装字符串。

示例:

参数

  • int $width <p>包装的字符数.</p>
  • string $break [可选] <p>用于断开字符串的字符。| 默认: "\n"</p>

返回

  • static

hasLowerCase(): bool

如果字符串包含小写字母,则返回 true,否则返回 false

示例: s('fòôbàř')->hasLowerCase(); // true

参数:

返回

  • bool <p>字符串是否包含小写字母.</p>

hasUpperCase(): bool

如果字符串包含大写字母,则返回 true,否则返回 false。

示例: s('fòôbàř')->hasUpperCase(); // false

参数:

返回

  • bool <p>字符串是否包含大写字母.</p>

hash(string $algorithm): static

生成一个散列值(消息摘要)。

示例:

参数

  • string $algorithm <p>所选散列算法的名称(例如,"md5","sha256","haval160,4",等等)</p>

返回

  • static

hexDecode(): static

将字符串从十六进制解码。

示例:

参数:

返回

  • static

hexEncode(): static

将字符串编码为十六进制。

示例:

参数:

返回

  • static

htmlDecode(int $flags): static

将所有 HTML 实体转换为它们相应的字符。

示例: s('&')->htmlDecode(); // '&'

参数

  • `int $flags [optional]

    以下标志中的一个或多个的位掩码,用于指定如何处理引号以及要使用的文档类型。默认为 ENT_COMPAT。

可用的 flags 常量

`

返回

  • static <p>在经过 html 解码后的结果 $str 的对象.</p>

htmlEncode(int $flags): static

将所有适用字符转换为 HTML 实体。

示例: s('&')->htmlEncode(); // '&'

参数

  • `int $flags [optional]

    以下标志中的一个或多个的位掩码,用于指定如何处理引号以及要使用的文档类型。默认为 ENT_COMPAT。

可用的 flags 常量

`

返回

  • static <p>在经过 html 编码后的结果 $str 的对象.</p>

humanize(): static

将字符串的第一个单词首字母大写,将下划线替换为空格,并删除 '_id'。

示例: s('author_id')->humanize(); // 'Author'

参数:

返回

  • static <p>包含 humanized $str 的对象.</p>

in(string $str, bool $caseSensitive): bool

确定当前字符串是否存在于另一个字符串中。默认情况下,比较是区分大小写的,但可以通过将 $caseSensitive 设置为 false 来进行不区分大小写的比较。

示例:

参数

  • string $str <p>要比较的字符串.</p>
  • bool $caseSensitive [optional] <p>是否强制执行大小写敏感。默认:true</p>

返回

  • bool

indexOf(string $needle, int $offset): false|int

返回 $needle 在字符串中首次出现的索引,如果没有找到则返回 false。接受一个可选的偏移量,从该偏移量开始搜索。

示例: s('string')->indexOf('ing'); // 3

参数

  • string $needle <p>要查找的子串。</p>
  • int $offset [optional] <p>搜索的偏移量。默认:0</p>

返回

  • false|int <p>如果找到,则为出现的位置的 <strong>索引</strong>,否则为 <strong>false</strong>.</p>

indexOfIgnoreCase(string $needle, int $offset): false|int

返回 $needle 在字符串中首次出现的索引,如果没有找到则返回 false。接受一个可选的偏移量,从该偏移量开始搜索。

示例: s('string')->indexOfIgnoreCase('ING'); // 3

参数

  • string $needle <p>要查找的子串。</p>
  • int $offset [optional] <p>搜索的偏移量。默认:0</p>

返回

  • false|int <p>如果找到,则为出现的位置的 <strong>索引</strong>,否则为 <strong>false</strong>.</p>

indexOfLast(string $needle, int $offset): false|int

返回 $needle 在字符串中最后一次出现的索引,如果没有找到则返回 false。接受一个可选的偏移量,从该偏移量开始搜索。偏移量可以是负数,从字符串的最后一个字符开始计数。

示例: s('foobarfoo')->indexOfLast('foo'); // 10

参数

  • string $needle <p>要查找的子串。</p>
  • int $offset [optional] <p>搜索的偏移量。默认:0</p>

返回

  • false|int <p>如果找到,则为最后一次出现的 <strong>索引</strong>,否则为 <strong>false</strong>.</p>

indexOfLastIgnoreCase(string $needle, int $offset): false|int

返回 $needle 在字符串中最后一次出现的索引,如果没有找到则返回 false。接受一个可选的偏移量,从该偏移量开始搜索。偏移量可以是负数,从字符串的最后一个字符开始计数。

示例: s('fooBarFoo')->indexOfLastIgnoreCase('foo'); // 10

参数

  • string $needle <p>要查找的子串。</p>
  • int $offset [optional] <p>搜索的偏移量。默认:0</p>

返回

  • false|int <p>如果找到,则为最后一次出现的 <strong>索引</strong>,否则为 <strong>false</strong>.</p>

insert(string $substring, int $index): static

在指定的 $index 位置将 $substring 插入到字符串中。

示例: s('fòôbř')->insert('à', 4); // 'fòôbàř'

参数

  • string $substring <p>要插入的字符串.</p>
  • int $index <p>插入子字符串的索引位置.</p>

返回

  • static <p>插入后的结果 $str 对象.</p>

is(string $pattern): bool

如果字符串包含 $pattern,则返回 true,否则返回 false。

警告:星号 ("*") 被转换为 (".") 零个或多个正则表达式通配符。

示例: s('Foo\Bar\Lall')->is('\Bar\'); // true

参数

  • string $pattern <p>要匹配的字符串或模式.</p>

返回

  • bool <p>是否匹配提供的模式.</p>

isAlpha(): bool

如果字符串只包含字母字符,则返回 true,否则返回 false。

示例: s('丹尼爾')->isAlpha(); // true

参数:

返回

  • bool <p>是否 $str 只包含字母字符.</p>

isAlphanumeric(): bool

如果字符串只包含字母和数字字符,则返回 true,否则返回 false。

示例: s('دانيال1')->isAlphanumeric(); // true

参数:

返回

  • bool <p>是否 $str 只包含字母数字字符.</p>

isAscii(): bool

检查字符串是否为 7 位 ASCII。

示例: s('白')->isAscii; // false

参数:

返回

  • `bool

    true 如果是 ASCII
    false 否则

`

isBase64(bool $emptyStringIsValid): bool

如果字符串是 base64 编码的,则返回 true,否则返回 false。

示例: s('Zm9vYmFy')->isBase64(); // true

参数

  • bool $emptyStringIsValid

返回

  • bool <p>是否 $str 是 base64 编码的.</p>

isBinary(): bool

检查输入是否为二进制... (看起来像是一个漏洞)。

示例: s(01)->isBinary(); // true

参数:

返回

  • bool

isBlank(): bool

如果字符串只包含空白字符,则返回 true,否则返回 false。

示例: s("\n\t \v\f")->isBlank(); // true

参数:

返回

  • bool <p>是否 $str 只包含空白字符.</p>

isBom(): bool

检查给定的字符串是否等于任何 "字节顺序标记"。

警告:如果你将检查字符串中的 BOM,请使用 "s::string_has_bom()"。

示例: s->("\xef\xbb\xbf")->isBom(); // true

参数:

返回

  • bool <p><strong>true</strong> 如果 $utf8_chr 是字节顺序标记,<strong>false</strong> 否则.</p>

isEmail(bool $useExampleDomainCheck, bool $useTypoInDomainCheck, bool $useTemporaryDomainCheck, bool $useDnsCheck): bool

如果字符串包含有效的电子邮件地址,则返回 true,否则返回 false。

示例: s('[email protected]')->isEmail(); // true

参数

  • bool $useExampleDomainCheck [可选] <p>默认:false</p>
  • bool $useTypoInDomainCheck [可选] <p>默认:false</p>
  • bool $useTemporaryDomainCheck [可选] <p>默认:false</p>
  • bool $useDnsCheck [可选] <p>默认:false</p>

返回

  • bool <p>是否 $str 包含有效的电子邮件地址.</p>

isEmpty(): bool

确定字符串是否被认为是空的。

如果变量不存在或其值等于 FALSE,则认为变量为空。

示例: s('')->isEmpty(); // true

参数:

返回

  • bool <p>是否 $str 为空().</p>

isEquals(string|\Stringy $str): bool

判断字符串是否等于 $str。

isEqualsCaseSensitive() 的别名

示例: s('foo')->isEquals('foo'); // true

参数

  • string|\Stringy ...$str

返回

  • bool

isEqualsCaseInsensitive(float|int|string|\Stringy $str): bool

判断字符串是否等于 $str。

示例:

参数

  • float|int|string|\Stringy ...$str <p>要比较的字符串.</p>

返回

  • bool <p>是否 $str 相等.</p>

isEqualsCaseSensitive(float|int|string|\Stringy $str): bool

判断字符串是否等于 $str。

示例:

参数

  • float|int|string|\Stringy ...$str <p>要比较的字符串.</p>

返回

  • bool <p>是否 $str 相等.</p>

isHexadecimal(): bool

如果字符串只包含十六进制字符,则返回 true,否则返回 false。

示例: s('A102F')->isHexadecimal(); // true

参数:

返回

  • bool <p>字符串是否只包含十六进制字符.</p>

isHtml(): bool

如果字符串包含 HTML 标签,则返回 true,否则返回 false。

示例: s('

foo

')->isHtml(); // true

参数:

返回

  • bool <p>字符串是否包含 HTML 标签.</p>

isJson(bool $onlyArrayOrObjectResultsAreValid): bool

如果字符串是 JSON,则返回 true,否则返回 false。与 PHP 5.x 中的 json_decode 不同,此方法与 PHP 7 和其他 JSON 解析器一致,即空字符串不被视为有效的 JSON。

示例: s('{"foo":"bar"}')->isJson(); // true

参数

  • bool $onlyArrayOrObjectResultsAreValid

返回

  • bool <p>字符串是否是 JSON.</p>

isLowerCase(): bool

如果字符串只包含小写字符,则返回 true,否则返回 false。

示例: s('fòôbàř')->isLowerCase(); // true

参数:

返回

  • bool <p>字符串是否只包含小写字符.</p>

isNotEmpty(): bool

判断字符串是否被认为是“非空”。

如果变量存在或其值等于 TRUE,则认为变量是非空的。

示例: s('')->isNotEmpty(); // false

参数:

返回

  • bool <p>是否 $str 为空().</p>

isNumeric(): bool

判断字符串是否由数字字符组成。

示例:

参数:

返回

  • bool

isPrintable(): bool

判断字符串是否由可打印(非不可见)字符组成。

示例:

参数:

返回

  • bool

isPunctuation(): bool

判断字符串是否由标点符号字符组成。

示例:

参数:

返回

  • bool

isSerialized(): bool

如果字符串已序列化,则返回 true,否则返回 false。

示例: s('a:1:{s:3:"foo";s:3:"bar";}')->isSerialized(); // true

参数:

返回

  • bool <p>字符串是否已序列化.</p>

isSimilar(string $str, float $minPercentForSimilarity): bool

检查两个字符串是否相似。

示例:

参数

  • string $str <p>要比较的字符串.</p>
  • float $minPercentForSimilarity [可选] <p>所需相似度的百分比。 | 默认: 80%</p>

返回

  • bool

isUpperCase(): bool

如果字符串只包含小写字符,则返回 true,否则返回 false。

示例: s('FÒÔBÀŘ')->isUpperCase(); // true

参数:

返回

  • bool <p>字符串是否只包含小写字符.</p>

isUrl(bool $disallow_localhost): bool

/** 检查 $url 是否是一个正确的 URL。

参数

  • bool $disallow_localhost

返回

  • bool

isUtf8(bool $strict): bool

检查传入的输入是否只包含有效的 UTF-8 字节序列。

示例: s('Iñtërnâtiônàlizætiøn')->isUtf8(); // true // s("Iñtërnâtiônàlizætiøn\xA0\xA1")->isUtf8(); // false

参数

  • 布尔 $strict <p>检查字符串是否不是UTF-16或UTF-32。</p>

返回

  • bool

isUtf16(): false|int

检查字符串是否为UTF-16。

参数:

返回

  • false|int <strong>false</strong> 如果不是UTF-16,<br> <strong>1</strong> 为UTF-16LE,<br> <strong>2</strong> 为UTF-16BE

isUtf32(): false|int

检查字符串是否为UTF-32。

参数:

返回

  • false|int <strong>false</strong> 如果不是UTF-32,<br> <strong>1</strong> 为UTF-32LE,<br> <strong>2</strong> 为UTF-32BE

isWhitespace(): bool

如果字符串只包含空白字符,则返回 true,否则返回 false。

示例:

参数:

返回

  • bool <p>是否 $str 只包含空白字符.</p>

jsonSerialize(): string

返回可以被json_encode()序列化的值。

示例:

参数:

返回

  • string 当前 $str 属性的值

kebabCase(): 静态

将字符串转换为kebab-case格式。

示例:

参数:

返回

  • static

last(int $n): 静态

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

EXAMPLE: s('fòôbàř')->last(3); // 'bàř'

参数

  • int $n <p>从末尾获取的字符数量。</p>

返回

  • 静态 <p>包含其 $str 属性为最后$n个字符的对象。</p>

lastSubstringOf(string $needle, bool $beforeNeedle): 静态

获取字符串中"$needle"最后一次出现之后的子串(或通过"$beforeNeedle"获取其之前的子串)。

如果没有找到匹配项,则返回新的空Stringy对象。

示例:

参数

  • string $needle <p>要查找的字符串。</p>
  • bool $beforeNeedle [optional] <p>默认: false</p>

返回

  • static

lastSubstringOfIgnoreCase(string $needle, bool $beforeNeedle): 静态

获取字符串中"$needle"最后一次出现之后的子串(或通过"$beforeNeedle"获取其之前的子串)。

如果没有找到匹配项,则返回新的空Stringy对象。

示例:

参数

  • string $needle <p>要查找的字符串。</p>
  • bool $beforeNeedle [optional] <p>默认: false</p>

返回

  • static

length(): int

返回字符串的长度。

EXAMPLE: s('fòôbàř')->length(); // 6

参数:

返回

  • int <p>给定编码的字符数量。</p>

lineWrap(int $limit, string $break, bool $add_final_break, string|null $delimiter): 静态

在$limit之后,并在下一个单词之后换行。

示例:

参数

  • int $limit [optional] <p>列宽。</p>
  • string $break [optional] <p>使用可选的break参数来断行。</p>
  • `bool $add_final_break [optional]

    如果此标志为true,则方法将在结果字符串末尾添加$break。

` - `string|null $delimiter [optional]

您可以更改默认行为,其中我们通过换行符拆分字符串。

`

返回

  • static

lineWrapAfterWord(int $limit, string $break, bool $add_final_break, string|null $delimiter): 静态

在$limit之后,并在下一个单词之后换行。

示例:

参数

  • int $limit [optional] <p>列宽。</p>
  • string $break [optional] <p>使用可选的break参数来断行。</p>
  • `bool $add_final_break [optional]

    如果此标志为true,则方法将在结果字符串末尾添加$break。

` - `string|null $delimiter [optional]

您可以更改默认行为,其中我们通过换行符拆分字符串。

`

返回

  • static

lines(): 静态[]

在换行符和回车符处拆分,返回一个包含与字符串中的行对应的Stringy对象的数组。

EXAMPLE: s("fòô\r\nbàř\n")->lines(); // ['fòô', 'bàř', '']

参数:

返回

  • static[] <p>Stringy对象的数组。</p>

linesCollection(): CollectionStringy|static[]

在换行符和回车符处拆分,返回一个包含与字符串中的行对应的Stringy对象的数组。

示例:

参数:

返回

  • \CollectionStringy|static[] <p>Stringy对象的集合。</p>

longestCommonPrefix(string $otherStr): 静态

返回字符串和$otherStr之间的最长公共前缀。

EXAMPLE: s('foobar')->longestCommonPrefix('foobaz'); // 'fooba'

参数

  • string $otherStr <p>用于比较的第二个字符串。</p>

返回

  • 静态 <p>其 $str 属性为最长公共前缀的对象。</p>

longestCommonSubstring(string $otherStr): 静态

返回字符串和$otherStr之间的最长公共子串。

在出现平局的情况下,它返回首先出现的那个。

EXAMPLE: s('foobar')->longestCommonSubstring('boofar'); // 'oo'

参数

  • string $otherStr <p>用于比较的第二个字符串。</p>

返回

  • 静态

    对象,其 $str 属性为最长公共子串。

longestCommonSuffix(string $otherStr): 静态

返回字符串和 $otherStr 之间的最长公共后缀。

示例: s('fòôbàř')->longestCommonSuffix('fòrbàř'); // 'bàř'

参数

  • string $otherStr <p>用于比较的第二个字符串。</p>

返回

  • 静态

    对象,其 $str 属性为最长公共后缀。

lowerCaseFirst(): 静态

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

示例: s('Σ Foo')->lowerCaseFirst(); // 'σ Foo'

参数:

返回

  • 静态

    对象,其 $str 属性的第一个字符为小写。

matchCaseInsensitive(string|\Stringy $str): bool

确定字符串是否与另一个字符串匹配,忽略大小写。

isEqualsCaseInsensitive() 的别名

示例:

参数

  • string|\Stringy ...$str

    要比较的字符串。

返回

  • bool

matchCaseSensitive(string|\Stringy $str): bool

确定字符串是否与另一个字符串匹配。

isEqualsCaseSensitive() 的别名

示例:

参数

  • string|\Stringy ...$str

    要比较的字符串。

返回

  • bool

md5(): 静态

从当前字符串创建 md5 哈希。

参数:

返回

  • static

newLineToHtmlBreak(): 静态

将所有换行符 [
| \r\n | \r | \n | ...] 替换为 "
".

示例:

参数:

返回

  • static

nth(int $step, int $offset): 静态

获取字符串的每 nth 个字符。

示例:

参数

  • int $step

    要步进的字符数。

  • int $offset [可选]

    开始的位置字符串偏移。

返回

  • static

offsetExists(int $offset): bool

返回是否在索引处存在字符。偏移量可以是负数,从字符串的最后一个字符开始计数。实现 ArrayAccess 接口的一部分。

示例:

参数

  • int $offset

    要检查的索引。

返回

  • bool

    索引是否存在。

offsetGet(int $offset): string

返回给定索引处的字符。偏移量可以是负数,从字符串的最后一个字符开始计数。实现 ArrayAccess 接口的一部分,如果索引不存在,则抛出 OutOfBoundsException。

示例:

参数

  • int $offset

    检索字符的索引。

返回

  • string

    指定索引处的字符。

offsetSet(int $offset, mixed $value): void

实现 ArrayAccess 接口的一部分,但在调用时抛出异常。这保持了 Stringy 对象的不变性。

示例:

参数

  • int $offset

    字符的索引。

  • mixed $value

    要设置的值。

返回

  • void

offsetUnset(int $offset): void

实现 ArrayAccess 接口的一部分,但在调用时抛出异常。这保持了 Stringy 对象的不变性。

示例:

参数

  • int $offset

    字符的索引。

返回

  • void

pad(int $length, string $padStr, string $padType): 静态

使用 $padStr 填充字符串到指定的长度。如果长度小于或等于字符串的长度,则不进行填充。默认的填充字符串是空格,默认类型('left', 'right', 'both' 中的一个)是 'right'。如果 $padType 不是这些值之一,则抛出 InvalidArgumentException。

示例: s('fòôbàř')->pad(9, '-/', 'left'); // '-/-fòôbàř'

参数

  • int $length

    填充后的期望字符串长度。

  • string $padStr [可选]

    用于填充的字符串,默认为空格。默认: ' '</p>

  • 字符串 $padType [可选] <p>可以是 'left', 'right', 'both' 中的一个。默认: 'right'</p>

返回

  • 静态 <p>包含填充后的 $str 对象.</p>

padBoth(int $length, string $padStr): 静态

返回一个新的字符串,长度为给定长度,使得字符串的两侧都进行填充。pad() 方法的别名,其中 $padType 为 'both'。

示例: s('foo bar')->padBoth(9, ' '); // ' foo bar '

参数

  • int $length

    填充后的期望字符串长度。

  • string $padStr [可选]

    用于填充的字符串,默认为空格。默认: ' '</p>

返回

  • 静态 <p>应用填充后的字符串.</p>

padLeft(int $length, string $padStr): 静态

返回一个新的字符串,长度为给定长度,使得字符串的开始部分进行填充。pad() 方法的别名,其中 $padType 为 'left'。

示例: s('foo bar')->padLeft(9, ' '); // ' foo bar'

参数

  • int $length

    填充后的期望字符串长度。

  • string $padStr [可选]

    用于填充的字符串,默认为空格。默认: ' '</p>

返回

  • 静态 <p>左填充的字符串.</p>

padRight(int $length, string $padStr): 静态

返回一个新的字符串,长度为给定长度,使得字符串的末尾进行填充。pad() 方法的别名,其中 $padType 为 'right'。

示例: s('foo bar')->padRight(10, '*'); // 'foo bar*_'

参数

  • int $length

    填充后的期望字符串长度。

  • string $padStr [可选]

    用于填充的字符串,默认为空格。默认: ' '</p>

返回

  • 静态 <p>右填充的字符串.</p>

pascalCase(): 静态

将字符串转换为 PascalCase 格式。

studlyCase() 的别名

示例:

参数:

返回

  • static

prepend(string $prefix): 静态

返回一个新的字符串,以 $prefix 开头。

示例: s('bàř')->prepend('fòô'); // 'fòôbàř'

参数

  • string ...$prefix <p>要附加的字符串.</p>

返回

  • 静态 <p>附加 $prefix 后的对象.</p>

prependStringy(\CollectionStringy|static $prefix): 静态

返回一个新的字符串,以 $prefix 开头。

示例:

参数

  • CollectionStringy<int, static>|static ...$prefix <p>要附加的 Stringy 对象.</p>

返回

  • 静态 <p>附加 $prefix 后的对象.</p>

regexReplace(string $pattern, string $replacement, string $options, string $delimiter): 静态

将 $str 中的所有 $pattern 替换为 $replacement。

示例: s('fòô ')->regexReplace('f[òô]+\s', 'bàř'); // 'bàř' s('fò')->regexReplace('(ò)', '\1ô'); // 'fòô'

参数

  • string $pattern <p>正则表达式模式.</p>
  • string $replacement <p>替换用的字符串.</p>
  • string $options [可选] <p>匹配条件.</p>
  • string $delimiter [可选] <p>正则表达式的分隔符。默认: '/'</p>

返回

  • 静态 <p>替换后的 $str 的结果对象.</p>

removeHtml(string $allowableTags): 静态

通过 "strip_tags()" 从字符串中移除 HTML。

示例: s('řàb <ô>òf', ô
foo lall')->removeHtml('

'); // 'řàb òf', ô
foo lall'

参数

  • `string $allowableTags [可选]

    可以使用可选的第二个参数来指定不应移除的标签。默认: null

`

返回

  • static

removeHtmlBreak(string $replacement): 静态

从字符串中移除所有断行符 [
| \r\n | \r | \n | ...]

示例: s('řàb <ô>òf', ô
foo lall')->removeHtmlBreak(''); // 'řàb <ô>òf', ô< foo lall'

参数

  • string $replacement [可选] <p>默认为空字符串.</p>

返回

  • static

removeLeft(string $substring): 静态

如果存在,则返回一个新的字符串,其前缀 $substring 已被移除。

示例: s('fòôbàř')->removeLeft('fòô'); // 'bàř'

参数

  • 字符串 $substring

    要移除的前缀。

返回

  • 静态

    具有不带前缀 $substring 的 $str 的对象。

removeRight(string $substring): 静态

如果存在,则返回移除后缀 $substring 的新字符串。

示例: s('fòôbàř')->removeRight('bàř'); // 'fòô'

参数

  • string $substring

    要移除的后缀。

返回

  • 静态

    具有不带后缀 $substring 的 $str 的对象。

removeXss(): 静态

尝试从字符串中移除所有 XSS 攻击。

示例: s('')->removeXss(); // ''

参数:

返回

  • static

repeat(int $multiplier): 静态

根据乘数返回重复的字符串。

示例: s('α')->repeat(3); // 'ααα'

参数

  • int $multiplier

    重复字符串的次数。

返回

  • 静态

    具有重复 $str 的对象。

replace(string $search, string $replacement, bool $caseSensitive): 静态

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

示例: s('fòô bàř fòô bàř')->replace('fòô ', ''); // 'bàř bàř'

参数

  • string $search

    要搜索的针。

  • string $replacement <p>替换用的字符串.</p>
  • bool $caseSensitive [optional] <p>是否强制执行大小写敏感。默认:true</p>

返回

  • 静态

    替换后结果 $str 的对象。

replaceAll(string[] $search, string|string[] $replacement, bool $caseSensitive): 静态

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

示例: s('fòô bàř lall bàř')->replaceAll(['fòÔ ', 'lall'], '', false); // 'bàř bàř'

参数

  • string[] $search

    要搜索的元素。

  • string|string[] $replacement

    要替换的字符串。

  • bool $caseSensitive [optional] <p>是否强制执行大小写敏感。默认:true</p>

返回

  • 静态

    替换后结果 $str 的对象。

replaceBeginning(string $search, string $replacement): 静态

用 $replacement 替换字符串开头所有 $search 的出现。

示例: s('fòô bàř fòô bàř')->replaceBeginning('fòô', ''); // ' bàř bàř'

参数

  • string $search

    要搜索的字符串。

  • string $replacement

    替换。

返回

  • 静态

    替换后结果 $str 的对象。

replaceEnding(string $search, string $replacement): 静态

用 $replacement 替换字符串结尾所有 $search 的出现。

示例: s('fòô bàř fòô bàř')->replaceEnding('bàř', ''); // 'fòô bàř fòô '

参数

  • string $search

    要搜索的字符串。

  • string $replacement

    替换。

返回

  • 静态

    替换后结果 $str 的对象。

replaceFirst(string $search, string $replacement): 静态

用 $replacement 替换字符串开头第一个 $search 的出现。

示例:

参数

  • string $search

    要搜索的字符串。

  • string $replacement

    替换。

返回

  • 静态

    替换后结果 $str 的对象。

replaceLast(string $search, string $replacement): 静态

用 $replacement 替换字符串结尾最后一个 $search 的出现。

示例:

参数

  • string $search

    要搜索的字符串。

  • string $replacement

    替换。

返回

  • 静态

    替换后结果 $str 的对象。

reverse(): 静态

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

示例: s('fòôbàř')->reverse(); // 'řàbôòf'

参数:

返回

  • 静态

    具有反转 $str 的对象。

safeTruncate(int $length, string $substring, bool $ignoreDoNotSplitWordsForOneWord): 静态

将字符串截断到指定的长度,同时确保不分割单词。如果提供了 $substring,并且发生了截断,字符串将进一步截断,以便可以附加子串而不会超过所需长度。

示例: s('What are your plans today?')->safeTruncate(22, '...'); // 'What are your plans...'

参数

  • int $length

    截断字符串的期望长度。

  • string $substring [可选]

    如果可以适配,则附加的子串。默认:''

  • bool $ignoreDoNotSplitWordsForOneWord

返回

  • 静态 <p>截断后结果为 $str 的对象.</p>

setInternalEncoding(string $new_encoding): 静态

设置内部字符编码。

示例:

参数

  • string $new_encoding <p>所需的字符编码。</p>

返回

  • static

sha1(): 静态

从当前字符串创建 sha1 哈希。

示例:

参数:

返回

  • static

sha256(): 静态

从当前字符串创建 sha256 哈希。

示例:

参数:

返回

  • static

sha512(): 静态

从当前字符串创建 sha512 哈希。

示例:

参数:

返回

  • static

shortenAfterWord(int $length, string $strAddOn): 静态

在 $length 后截断字符串,同时在下一个单词后截断。

示例: s('this is a test')->shortenAfterWord(2, '...'); // 'this...'

参数

  • int $length <p>给定的长度.</p>
  • string $strAddOn [可选] <p>默认: '…'</p>

返回

  • static

shuffle(): 静态

多字节字符串打乱顺序的函数。它返回一个字符顺序随机的字符串。

示例: s('fòôbàř')->shuffle(); // 'àôřbòf'

参数:

返回

  • 静态 <p>带有打乱后的 $str 的对象.</p>

similarity(string $str): float

计算两个字符串之间的相似度。

示例:

参数

  • string $str <p>分隔字符串.</p>

返回

  • float

slice(int $start, int $end): 静态

返回从 $start 开始的子字符串,直到但不包括由 $end 指定的索引。如果省略 $end,则提取剩余的字符串。如果 $end 为负数,则从字符串的末尾计算。

示例: s('fòôbàř')->slice(3, -1); // 'bà'

参数

  • int $start <p>开始提取的初始索引.</p>
  • int $end [可选] <p>结束提取的索引。默认:null</p>

返回

  • 静态 <p>其 $str 被提取为子字符串的对象.</p>

slugify(string $separator, string $language, string[] $replacements, bool $replace_extra_symbols, bool $use_str_to_lower, bool $use_transliterate): 静态

将字符串转换为 URL slug。这包括将非 ASCII 字符替换为它们的最近的 ASCII 等效字符,删除剩余的非 ASCII 和非字母数字字符,并用 $separator 替换空格。分隔符默认为一个短横线,字符串也被转换为小写。也可以提供源字符串的语言以进行特定语言的转写。

示例: s('Using strings like fòô bàř')->slugify(); // 'using-strings-like-foo-bar'

参数

  • string $separator [可选] <p>用于替换空格的字符串.</p>
  • ASCII::*_LANGUAGE_CODE $language [可选] <p>源字符串的语言.</p>
  • array<string, string> $replacements [可选] <p>可替换字符串的映射.</p>
  • bool $replace_extra_symbols [可选] <p>添加一些额外的替换,例如 "£" 替换为 " pound "</p>
  • bool $use_str_to_lower [可选] <p>使用 "string to lower" 作为输入.</p>
  • bool $use_transliterate [可选] <p>对于未知字符使用 ASCII::to_transliterate()</p>

返回

  • 静态 <p>其 $str 已被转换为 URL slug 的对象.</p>

snakeCase(): 静态

将字符串转换为 snake_case。

示例:

参数:

返回

  • static

snakeize(): 静态

将字符串转换为 snake_case。

示例: s('foo1 Bar')->snakeize(); // 'foo_1_bar'

参数:

返回

  • 静态 <p>其 $str 在 snake_case 的对象.</p>

softWrap(int $width, string $break): 静态

在指定字符数之后的第一个空白字符后包装字符串。

示例:

参数

  • int $width <p>包装的字符数.</p>
  • string $break [optional] <p>用于分割字符串的字符。默认值 "\n"</p>

返回

  • static

split(string $pattern, int $limit): static[]

使用提供的正则表达式分割字符串,返回一个Stringy对象的数组。可选的整数$limit将截断结果。

示例: s('foo,bar,baz')->split(',', 2); // ['foo', 'bar']

参数

  • string $pattern <p>用于分割字符串的正则表达式.</p>
  • int $limit [optional] <p>返回的最大结果数。默认:-1 === 无限制</p>

返回

  • static[] <p>Stringy对象的数组。</p>

splitCollection(string $pattern, int $limit): CollectionStringy|static[]

使用提供的正则表达式分割字符串,返回一个Stringy对象的集合。可选的整数$limit将截断结果。

示例:

参数

  • string $pattern <p>用于分割字符串的正则表达式.</p>
  • int $limit [optional] <p>返回的最大结果数。默认:-1 === 无限制</p>

返回

  • \CollectionStringy|static[] <p>Stringy对象的集合。</p>

startsWith(string $substring, bool $caseSensitive): bool

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

示例: s('FÒÔbàřbaz')->startsWith('fòôbàř', false); // true

参数

  • string $substring <p>要查找的子字符串。</p>
  • bool $caseSensitive [optional] <p>是否强制执行大小写敏感。默认:true</p>

返回

  • bool <p>是否 $str 以 $substring 开头.</p>

startsWithAny(string[] $substrings, bool $caseSensitive): bool

如果字符串以任何$substrings开头,则返回true,否则返回false。

默认情况下,比较是区分大小写的,但可以通过将$caseSensitive设置为false来进行不区分大小写的比较。

示例: s('FÒÔbàřbaz')->startsWithAny(['fòô', 'bàř'], false); // true

参数

  • string[] $substrings <p>要查找的子字符串数组。</p>
  • bool $caseSensitive [optional] <p>是否强制执行大小写敏感。默认:true</p>

返回

  • bool <p>是否 $str 以 $substring 开头.</p>

strip(string|string[] $search): static

从字符串中移除一个或多个字符串。

示例:

参数

  • string|string[] $search 要移除的一个或多个字符串

返回

  • static

stripWhitespace(): static

移除所有空白字符。这包括制表符和换行符,以及多字节空白,如细空格和表意空格。

示例: s(' Ο συγγραφέας ')->stripWhitespace(); // 'Οσυγγραφέας'

参数:

返回

  • static

stripeCssMediaQueries(): static

移除css媒体查询。

示例: s('test @media (min-width:660px){ .des-cla #mv-tiles{width:480px} } test ')>stripeCssMediaQueries(); // 'test test '

参数:

返回

  • static

stripeEmptyHtmlTags(): static

移除空html标签。

示例: s('foo

bar')->stripeEmptyHtmlTags(); // 'foobar'

参数:

返回

  • static

studlyCase(): static

将字符串转换为 StudlyCase。

示例:

参数:

返回

  • static

substr(int $start, int $length): static

返回从起始位置开始,指定长度的子字符串。

与 $this->utf8::substr() 函数不同,如果提供 $length 为 null,则返回字符串的其余部分,而不是空字符串。

示例:

参数

  • int $start <p>要使用的第一个字符的位置.</p>
  • int $length [optional] <p>使用的最大字符数。默认:null</p>

返回

  • static <p>包含其 $str 为子字符串的对象.</p>

substring(int $start, int $length): static

返回字符串的一部分。

substr() 的别名

示例: s('fòôbàř')->substring(2, 3); // 'ôbà'

参数

  • int $start <p>子字符串的起始位置.</p>
  • int $length [optional] <p>子字符串的长度.</p>

返回

  • static

substringOf(string $needle, bool $beforeNeedle): 静态

获取 "$needle" 首次出现之后(或通过 "$beforeNeedle" 前面)的子字符串。

如果没有找到匹配项,则返回新的空Stringy对象。

示例:

参数

  • string $needle <p>要查找的字符串。</p>
  • bool $beforeNeedle [optional] <p>默认: false</p>

返回

  • static

substringOfIgnoreCase(string $needle, bool $beforeNeedle): 静态

获取 "$needle" 首次出现之后(或通过 "$beforeNeedle" 前面)的子字符串。

如果没有找到匹配项,则返回新的空Stringy对象。

示例:

参数

  • string $needle <p>要查找的字符串。</p>
  • bool $beforeNeedle [optional] <p>默认: false</p>

返回

  • static

surround(string $substring): 静态

将给定的子字符串包围在 $str 两侧。

示例: s(' ͜ ')->surround('ʘ'); // 'ʘ ͜ ʘ'

参数

  • string $substring <p>要添加到两侧的子字符串。</P>

返回

  • static <p>将 $str 两端都添加了子字符串的对象。</p>

swapCase(): 静态

返回字符串的大小写反转版本。

示例: s('Ντανιλ')->swapCase(); // 'νΤΑΝΙΛ'

参数:

返回

  • static <p>每个字符的大小写都被反转的 $str 对象。</P>

tidy(): 静态

返回一个字符串,其中 Windows-1252(常用于 Word 文档)中的智能引号、省略号字符和连字符被它们的 ASCII 等价物替换。

示例: s('“I see…”')->tidy(); // '"I see..."'

参数:

返回

  • static <p>移除了这些字符的 $str 对象。</p>

titleize(string[]|null $ignore, string|null $word_define_chars, string|null $language): 静态

返回一个修剪过的字符串,每个单词的首字母都大写。

也接受一个数组,$ignore,允许您列出不要大写的单词。

示例: $ignore = ['at', 'by', 'for', 'in', 'of', 'on', 'out', 'to', 'the']; s('i like to watch television')->titleize($ignore); // 'I Like to Watch Television'

参数

  • string[]|null $ignore [可选] <p>一个不进行大写的单词数组或 null。默认:null</p>
  • string|null $word_define_chars [可选] <p>一个字符串,其中包含用作空白分隔符 === 单词的字符。</p>
  • string|null $language [可选] <p>源字符串的语言。</p>

返回

  • static <p>具有标题化 $str 的对象。</p>

titleizeForHumans(string[] $ignore): 静态

返回一个修剪过的正确标题格式的字符串:也接受一个数组,$ignore,允许您列出不要大写的单词。

示例:

改编自 John Gruber 的脚本。

参数

  • string[] $ignore <p>一个不进行大写的单词数组。</p>

返回

  • static <p>具有标题化 $str 的对象。</p>

toAscii(string $language, bool $removeUnsupported): 静态

返回字符串的 ASCII 版本。一组非 ASCII 字符被它们最接近的 ASCII 对应字符替换,其余的默认情况下被删除。可以提供源字符串的语言或区域设置进行语言特定的转写,以下格式之一:en、en_GB 或 en-GB。例如,传递 "de" 将导致 "äöü" 映射到 "aeoeue",而不是像其他语言中的 "aou"。

示例: s('fòôbàř')->toAscii(); // 'foobar'

参数

  • ASCII::*_LANGUAGE_CODE $language [可选] <p>源字符串的语言.</p>
  • bool $removeUnsupported [可选] <p>是否删除不受支持的字符。</p>

返回

  • static <p>只包含 ASCII 字符的 $str 对象。</p>

toBoolean(): bool

返回给定逻辑字符串值的布尔表示。

例如,“true”,“1”,“on”和“yes” 将返回 true。 “false”,“0”,“off”和“no” 将返回 false。在所有情况下,大小写将被忽略。对于其他数字字符串,它们的符号将决定返回值。此外,仅由空白组成的空白字符串将返回 false。对于所有其他字符串,返回值是布尔类型转换的结果。

示例: s('OFF')->toBoolean(); // false

参数:

返回

  • bool <p>字符串的布尔值.</p>

toLowerCase(bool $tryToKeepStringLength, string|null $lang): static

将字符串中的所有字符转换为小写。

示例: s('FÒÔBÀŘ')->toLowerCase(); // 'fòôbàř'

参数

  • bool $tryToKeepStringLength [optional] <p>true === 尝试保持字符串长度:例如 ẞ -> ß</p>
  • string|null $lang [optional] <p>为特殊情况设置语言:az, el, lt, tr</p>

返回

  • static <p>包含 $str 中所有字符的小写版本的对象.</p>

toSpaces(int $tabLength): static

将字符串中的每个制表符转换为由 $tabLength 定义的若干个空格。默认情况下,每个制表符转换为 4 个连续空格。

示例: s(' String speech = "Hi"')->toSpaces(); // ' String speech = "Hi"'

参数

  • int $tabLength [optional] <p>替换每个制表符的空格数。默认:4</p>

返回

  • static <p>将 $str 中的制表符替换为空格的对象.</p>

toString(): string

返回 Stringy 对象作为字符串,但也可以使用 (string) 将对象自动转换为字符串。

示例: s('fòôbàř')->toString(); // 'fòôbàř'

参数:

返回

  • string

toTabs(int $tabLength): static

将由 $tabLength 定义的连续空格数转换为制表符。默认情况下,每个 4 个连续空格转换为制表符。

示例: s(' fòô bàř')->toTabs(); // ' fòô bàř'

参数

  • int $tabLength [optional] <p>用制表符替换的空格数。默认:4</p>

返回

  • static <p>将 $str 中的空格替换为制表符的对象.</p>

toTitleCase(): static

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

示例: s('fòô bàř')->toTitleCase(); // 'Fòô Bàř'

参数:

返回

  • static <p>包含 $str 中所有字符标题化的对象.</p>

toTransliterate(bool $strict, string $unknown): static

返回字符串的 ASCII 版本。一组非 ASCII 字符被替换为它们最近的 ASCII 对应字符,其余字符除非另有说明,否则将被删除。

示例:

参数

  • bool $strict [optional] <p>使用 PHP-Intl 的 "transliterator_transliterate()" | 注意:性能较差 | 默认:false</p>
  • string $unknown [optional] <p>如果字符未知,则使用的字符。(默认为 ?)</p>

返回

  • static <p>只包含 ASCII 字符的 $str 对象。</p>

toUpperCase(bool $tryToKeepStringLength, string|null $lang): static

将字符串中的所有字符转换为大写。

示例: s('fòôbàř')->toUpperCase(); // 'FÒÔBÀŘ'

参数

  • bool $tryToKeepStringLength [optional] <p>true === 尝试保持字符串长度:例如 ẞ -> ß</p>
  • string|null $lang [optional] <p>为特殊情况设置语言:az, el, lt, tr</p>

返回

  • static <p>包含 $str 中所有字符大写的对象.</p>

trim(string $chars): static

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

示例: s(' fòôbàř ')->trim(); // 'fòôbàř'

参数

  • string $chars [可选] <p>要去除的字符字符串。默认: null</p>

返回

  • static <p>包含修剪后的 $str 的对象.</p>

trimLeft(string $chars): static

返回去除字符串开头空白字符的字符串。

支持去除 Unicode 空白字符。接受一个可选的字符字符串来替代默认值。

示例: s(' fòôbàř ')->trimLeft(); // 'fòôbàř '

参数

  • string $chars [可选] <p>可选的字符字符串用于去除。默认: null</p>

返回

  • static <p>包含修剪后的 $str 的对象.</p>

trimRight(string $chars): static

返回去除字符串末尾空白字符的字符串。

支持去除 Unicode 空白字符。接受一个可选的字符字符串来替代默认值。

示例: s(' fòôbàř ')->trimRight(); // ' fòôbàř'

参数

  • string $chars [可选] <p>可选的字符字符串用于去除。默认: null</p>

返回

  • static <p>包含修剪后的 $str 的对象.</p>

truncate(int $length, string $substring): static

将字符串截断到指定长度。如果提供了 $substring,并且发生截断,则进一步截断字符串,以便可以在不超出所需长度的情况下附加子串。

示例: s('What are your plans today?')->truncate(19, '...'); // 'What are your pl...'

参数

  • int $length

    截断字符串的期望长度。

  • string $substring [可选]

    如果可以适配,则附加的子串。默认:''

返回

  • 静态 <p>截断后结果为 $str 的对象.</p>

underscored(): static

返回由下划线分隔的小写且已修剪的字符串。

在字符串的第一个字符(除第一个字符外)之前插入下划线,以及替换空格和破折号。

示例: s('TestUCase')->underscored(); // 'test_u_case'

参数:

返回

  • static <p>包含下划线 $str 的对象.</p>

upperCamelize(): static

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

示例: s('Upper Camel-Case')->upperCamelize(); // 'UpperCamelCase'

参数:

返回

  • static <p>包含 UpperCamelCase $str 的对象.</p>

upperCaseFirst(): static

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

示例: s('σ foo')->upperCaseFirst(); // 'Σ foo'

参数:

返回

  • static <p>第一个字符为大写的 $str 的对象.</p>

urlDecode(): static

简单的 URL 解码。

例如: 'test+test' => 'test test'

示例:

参数:

返回

  • static

urlDecodeMulti(): static

多重 URL 解码 + 解码 HTML 实体 + 修复 urlencoded-win1252 字符。

例如: 'test+test' => 'test test' 'Düsseldorf' => 'Düsseldorf' 'D%FCsseldorf' => 'Düsseldorf' 'Düsseldorf' => 'Düsseldorf' 'D%26%23xFC%3Bsseldorf' => 'Düsseldorf' 'Düsseldorf' => 'Düsseldorf' 'D%C3%BCsseldorf' => 'Düsseldorf' 'D%C3%83%C2%BCsseldorf' => 'Düsseldorf' 'D%25C3%2583%25C2%25BCsseldorf' => 'Düsseldorf'

示例:

参数:

返回

  • static

urlDecodeRaw(): static

简单的 URL 解码。

例如: 'test+test' => 'test+test

示例:

参数:

返回

  • static

urlDecodeRawMulti(): static

多重 URL 解码 + 解码 HTML 实体 + 修复 urlencoded-win1252 字符。

例如: 'test+test' => 'test+test' 'Düsseldorf' => 'Düsseldorf' 'D%FCsseldorf' => 'Düsseldorf' 'Düsseldorf' => 'Düsseldorf' 'D%26%23xFC%3Bsseldorf' => 'Düsseldorf' 'Düsseldorf' => 'Düsseldorf' 'D%C3%BCsseldorf' => 'Düsseldorf' 'D%C3%83%C2%BCsseldorf' => 'Düsseldorf' 'D%25C3%2583%25C2%25BCsseldorf' => 'Düsseldorf'

示例:

参数:

返回

  • static

urlEncode(): static

简单的 URL 编码。

例如: 'test test' => 'test+test'

示例:

参数:

返回

  • static

urlEncodeRaw(): static

简单的 URL 编码。

例如: 'test test' => 'test%20test'

示例:

参数:

返回

  • static

urlify(string $separator, string $language, string[] $replacements, bool $strToLower): static

将字符串转换为URL别名。这包括将非ASCII字符替换为其最接近的ASCII等效字符,删除剩余的非ASCII和非字母数字字符,并使用$separator替换空格。分隔符默认为单个连字符,字符串也将转换为小写。

示例: s('使用类似于fòô bàř - 1$')->urlify(); // 'using-strings-like-foo-bar-1-dollar'

参数

  • string $separator [可选] <p>用于替换空格的字符串。默认:'-'</p>
  • string $language [可选] <p>URL的语言。默认:'en'</p>
  • array<string, string> $replacements [可选] <p>可替换字符串的映射.</p>
  • bool $strToLower [可选] <p>转换为小写。默认:true</p>

返回

  • 静态 <p>其 $str 已被转换为 URL slug 的对象.</p>

utf8ify(): 静态

将字符串转换为有效的UTF-8字符串。

示例: s('Düsseldorf')->utf8ify(); // 'Düsseldorf'

参数:

返回

  • static

words(string $char_list, bool $remove_empty_values, int|null $remove_short_values): static[]

将字符串转换为单词数组。

示例:

参数

  • string $char_list [可选] <p>定义"单词"时使用的额外字符。</p>
  • bool $remove_empty_values [可选] <p>删除空值。</p>
  • int|null $remove_short_values [可选] <p>最小字符串长度或null以禁用。</p>

返回

  • static[]

wordsCollection(string $char_list, bool $remove_empty_values, int|null $remove_short_values): CollectionStringy|static[]

将字符串转换为单词集合。

示例: S::create('中文空白 oöäü#s')->wordsCollection('#', true)->toStrings(); // ['中文空白', 'oöäü#s']

参数

  • string $char_list [可选] <p>定义"单词"时使用的额外字符。</p>
  • bool $remove_empty_values [可选] <p>删除空值。</p>
  • int|null $remove_short_values [可选] <p>最小字符串长度或null以禁用。</p>

返回

  • \CollectionStringy|static[] <p>Stringy对象的集合。</p>

wrap(string $substring): 静态

将给定的子字符串包围在 $str 两侧。

示例:

参数

  • string $substring <p>要添加到两侧的子字符串。</P>

返回

  • static <p>将 $str 两端都添加了子字符串的对象。</p>

测试

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

支持

有关支持和捐赠,请访问 Github | 问题 | PayPal | Patreon

有关状态更新和发布公告,请访问 发布 | Twitter | Patreon

有关专业支持,请联系

谢谢

  • 感谢 GitHub (Microsoft) 提供代码托管和良好的基础设施,包括问题管理等。
  • 感谢 IntelliJ,它们为PHP制作了最好的IDE,并且他们给了我PhpStorm的开源许可!
  • 感谢 Travis CI,它是最好的持续集成工具之一!
  • 感谢 StyleCI,它提供了简单但强大的代码风格检查。
  • 感谢 PHPStanPsalm,它们提供了真正出色的静态分析工具,并发现了代码中的错误!

许可证

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