# 字符串处理
字符串处理 - Nette \ Utils \字符串
Nette \ Utils \ Strings是一个静态类,它包含许多用于处理UTF-8编码字符串的有用函数。
所有示例假定定义了以下类别名:
~~~
use Nette\Utils\Strings;
~~~
## 大小写
lower($s)
将UTF-8字符串的所有字符转换为小写。
~~~
echo Strings::lower('Hello world'); // hello world
~~~
upper($s)
将UTF-8字符串的所有字符转换为大写。
~~~
echo Strings::upper('Hello world'); // HELLO WORLD
~~~
firstUpper($s)
将UTF-8字符串的第一个字符转换为大写,并保留其他字符不变。
~~~
echo Strings::firstUpper('hello world'); // Hello world
~~~
capitalize($s)
将UTF-8字符串的每个单词的第一个字符转换为大写,将其他字符转换为小写。
~~~
echo Strings::capitalize('Hello world'); // Hello World
~~~
## 编辑字符串
normalize($s)
删除右侧空格,控制序列,并将行尾合并为\ n。
webalize($s, $charlist=NULL, $lower=TRUE)
调整用于URL中的UTF-8字符串,即删除所有重音符,并替换除英文字母字母和数字以外的所有其余字符。
~~~
echo Strings::webalize('žluťoučký kůň'); // zlutoucky-kun
~~~
其他字符也可以保留,但必须作为第二个参数传递。
~~~
echo Strings::webalize('10. image_id', '._'); // 10.-image_id
~~~
第三个参数可以禁止将字符串转换为小写。
~~~
echo Strings::webalize('Hello world', NULL, FALSE); // Hello-world
~~~
trim($s, $charlist=NULL)
从UTF-8编码的字符串中删除所有左侧和右侧空格(或作为第二个参数传递的字符)。
~~~
echo Strings::trim(' Hello '); // 'Hello'
~~~
truncate($s, $maxLen, $append='…')
截断UTF-8字符串给定最大长度,同时尝试不分割整个单词。 只有当字符串被截断时,省略号(或者用第三个参数设置的其他内容)被附加到字符串。
~~~
$text = 'Hello, how are you today?';
echo Strings::truncate($text, 5); // 'Hell…'
echo Strings::truncate($text, 20); // 'Hello, how are you…'
echo Strings::truncate($text, 30); // 'Hello, how are you today?'
echo Strings::truncate($text, 20, '~'); // 'Hello, how are you~'
~~~
indent($s, $level=1, $indentationChar="\t")
从左侧缩进多行文本。 第二个参数设置应该使用多少个缩进字符,而缩进本身是第三个参数(默认为制表符)。
~~~
echo Strings::indent('Nette'); // ' Nette'
echo Strings::indent('Nette', 2, '+'); // '++Nette'
~~~
padLeft($s, $length, $pad=' ')
通过在开始处添加$ pad字符串,将UTF-8字符串填充到给定的长度。
~~~
echo Strings::padLeft('Nette', 6); // ' Nette'
echo Strings::padLeft('Nette', 8, '+'); // '+++Nette'
echo Strings::padLeft(' Nette', 11, 'WOW'); // 'WOWWO Nette'
~~~
padRight($s, $length, $pad=' ')
通过将$ pad字符串附加到末尾,将UTF-8字符串添加到给定的长度。
~~~
echo Strings::padRight('Nette', 6); // 'Nette '
echo Strings::padRight('Nette', 8, '+'); // 'Nette+++'
echo Strings::padRight('Nette is ', 16, 'great'); // 'Nette is greatgr'
~~~
fixEncoding($s)
从字符串中删除所有无效的UTF-8字符。
~~~
$correctStrings = Strings::fixEncoding($string);
~~~
bool checkEncoding($s)
检查字符串是否对UTF-8编码有效。
~~~
$isUtf8 = Strings::checkEncoding($string);
~~~
int length($s)
返回UTF-8字符串的长度。
~~~
echo Strings::length('Nette'); // '5'
echo Strings::length('červená'); // '7'
~~~
bool startsWith($haystack, $needle)
如果$ haystack字符串以$ needle开头,则返回TRUE。
~~~
$haystack = 'Begins';
$needle = 'Be';
Strings::startsWith($haystack, $needle); // TRUE
~~~
bool endsWith($haystack, $needle)
如果$ haystack string以$ needle结束,则返回TRUE。
~~~
$haystack = 'Ends';
$needle = 'ds';
Strings::endsWith($haystack, $needle); // TRUE
~~~
bool contains($haystack, $needle)
如果$ haystack string包含$ needle,则返回TRUE。
~~~
$haystack = 'Contains';
$needle = 'tai';
Strings::contains($haystack, $needle); // TRUE
~~~
bool compare($left, $right, $len=NULL)
比较两个UTF-8字符串或其部分,不考虑字符大小写。 如果$ len大于零,则比较从字符串开头开始的相应字符数量,如果为负,则比较从结束开始的相应字符数量,如果其等于零,则比较整个字符串。
~~~
echo Strings::compare('Nette', 'nette'); // TRUE
echo Strings::compare('Nette', 'next', 2); // TRUE - two first characters match
echo Strings::compare('Nette', 'Latte', -2); // TRUE - two last characters match
~~~
chr($code)
返回UTF-8中的特定字符。
~~~
echo Strings::chr(0xA9); // creates '©'
~~~
## 生成字符串
random($length=10, $charlist='0-9a-z')
从第二个参数中指定的字符生成给定长度的随机字符串。 支持间隔,例如0-9或A-Z。
~~~
echo Strings::random(); // '6zq3a1nl8n'
echo Strings::random(5, 'A-Z'); // 'HLKUR'
~~~
## 正则表达式
Strings类包含几个使用正则表达式的方法。 与本地PHP函数不同,它提供可读的API,并且如果发生任何regexp错误,则抛出Nette \ RegexpException。
array split($subject, $pattern, $flags=NULL)
通过正则表达式将字符串拆分为数组。 参数$ flag与preg_split具有相同的参数,但默认情况下设置为PREG_SPLIT_DELIM_CAPTURE。
~~~
$res = Strings::split('One, two,three', '~,\s*~');
// ['One', 'two', 'three']
$res = Strings::split('One, two,three', '~(,)\s*~');
// ['One', ',', 'two', ',', 'three']
~~~
array match($subject, $pattern, $flags=NULL, $offset=0)
检查给定的字符串是否匹配正则表达式模式,并返回具有第一个找到的匹配和每个子模式的数组。 参数$ flag与函数preg_match拥有相同的参数
~~~
list($res) = Strings::match('One, two,three', '~[a-z]+~i'); // 'One'
list($res) = Strings::match('One, two,three', '~\d+~'); // NULL
~~~
array matchAll($subject, $pattern, $flags=NULL, $offset=0)
查找与正则表达式模式匹配的所有匹配项,并返回一个二维数组。 参数$ flag与函数preg_match_all具有相同的参数,但默认情况下设置了PREG_SET_ORDER。
~~~
$res = Strings::matchAll('One, two,tree', '~[a-z]+~i');
/*
[
0 => ['One'],
1 => ['two'],
2 => ['three'],
]
*/
$res = Strings::matchAll('One, two,three', '~\d+~'); // []
~~~
replace($subject, $pattern, $replacement=NULL, $limit=-1)
替换与正则表达式匹配的所有匹配项,作为第二个参数传递。 虽然它可能是一个哈希映射在pattern =>替换格式。 第三个参数是替换字符串或回调,第四个参数限制替换计数。
~~~
echo Strings::replace('One, two,three', '~[a-z]+~i', '*');
// '*, *,*'
echo Strings::replace('One, two,three', [
'~[a-z]+~i' => '*',
'~\s+~' => '+',
]);
// '*,+*,*'
echo Strings::replace('One, two,three', '~[a-z]+~i', function ($m) {
return strrev($m[0]);
});
// 'enO, owt,eerht'
~~~
- Nette简介
- 快速开始
- 入门
- 主页
- 显示文章详细页
- 文章评论
- 创建和编辑帖子
- 权限验证
- 程序员指南
- MVC应用程序和控制器
- URL路由
- Tracy - PHP调试器
- 调试器扩展
- 增强PHP语言
- HTTP请求和响应
- 数据库
- 数据库:ActiveRow
- 数据库和表
- Sessions
- 用户授权和权限
- 配置
- 依赖注入
- 获取依赖关系
- DI容器扩展
- 组件
- 字符串处理
- 数组处理
- HTML元素
- 使用URL
- 表单
- 验证器
- 模板
- AJAX & Snippets
- 发送电子邮件
- 图像操作
- 缓存
- 本土化
- Nette Tester - 单元测试
- 与Travis CI的持续集成
- 分页
- 自动加载
- 文件搜索:Finder
- 原子操作