# 字符串處理
字符串處理 - 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?ky 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
- 原子操作