voku / stringy
支持多字节的字符串操作库
Requires
- php: >=7.0.0
- ext-json: *
- defuse/php-encryption: ~2.0
- voku/anti-xss: ~4.1
- voku/arrayy: ~7.8
- voku/email-check: ~3.1
- voku/portable-ascii: ~2.0
- voku/portable-utf8: ~6.0
- voku/urlify: ~5.0
Requires (Dev)
- phpunit/phpunit: ~6.0 || ~7.0 || ~9.0
Replaces
- danielstjules/stringy: ~3.0
- dev-master
- 6.5.3
- 6.5.2
- 6.5.1
- 6.5.0
- 6.4.4
- 6.4.3
- 6.4.2
- 6.4.1
- 6.4.0
- 6.3.1
- 6.3.0
- 6.2.2
- 6.2.1
- 6.2.0
- 6.1.0
- 6.0.2
- 6.0.1
- 6.0.0
- 5.2.0
- 5.1.1
- 5.1.0
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.2
- 4.0.1
- 4.0.0
- 3.1.0
- 3.0.1
- 3.0.0
- 2.4.0
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.36
- 2.2.35
- 2.2.34
- 2.2.33
- 2.2.32
- 2.2.31
- 2.2.30
- 2.2.29
- 2.2.28
- 2.2.27
- 2.2.26
- 2.2.25
- 2.2.24
- 2.2.23
- 2.2.22
- 2.2.21
- 2.2.20
- 2.2.19
- 2.2.18
- 2.2.17
- 2.2.16
- 2.2.15
- 2.2.14
- 2.2.13
- 2.2.12
- 2.2.11
- 2.2.10
- 2.2.9
- 2.2.8
- 2.2.7
- 2.2.6
- 2.2.5
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.0
- 1.x-dev
- 1.10.0
- 1.9.0
- 1.8.1
- 1.8.0
- 1.7.0
- 1.6.0
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.0
- 1.3.0
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.0
- 1.0.0-rc.1
- dev-dependabot/add-v2-config-file
- dev-whitesource/configure
- dev-analysis-Pxvk3W
This package is auto-updated.
Last update: 2024-09-18 00:05:45 UTC
README
🉑 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 update
或 php 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
是不可变的,任何对 offsetSet
或 offsetUnset
的调用都会抛出异常。已经实现了 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。
返回
static <p>在经过 html 解码后的结果 $str 的对象.</p>
htmlEncode(int $flags): static
↑ 将所有适用字符转换为 HTML 实体。
示例: s('&')->htmlEncode(); // '&'
参数
- `int $flags [optional]
以下标志中的一个或多个的位掩码,用于指定如何处理引号以及要使用的文档类型。默认为 ENT_COMPAT。
返回
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。
您可以更改默认行为,其中我们通过换行符拆分字符串。
`返回
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。
您可以更改默认行为,其中我们通过换行符拆分字符串。
`返回
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 攻击。
参数: 无
返回
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,它提供了简单但强大的代码风格检查。
- 感谢 PHPStan 和 Psalm,它们提供了真正出色的静态分析工具,并发现了代码中的错误!
许可证
在MIT许可下发布 - 有关详细信息,请参阅 LICENSE.txt
。