本文內(nèi)容較長,如有被截斷或缺失疹瘦,請參考原文:
PHP函數(shù)參考24-常用字符串函數(shù) - 9ong
PHP函數(shù)參考25-常用數(shù)組函數(shù) - 9ong
-
addslashes — 使用反斜線引用字符串
返回字符串媒吗,該字符串為了數(shù)據(jù)庫查詢語句等的需要在某些字符前加上了反斜線。這些字符是單引號(')、雙引號(")、反斜線(\)與 NUL(NULL 字符)。
注意:PHP 5.4 之前 PHP 指令 magic_quotes_gpc 默認(rèn)是 on舶沛, 實際上所有的 GET、POST 和 COOKIE 數(shù)據(jù)都用被 addslashes() 了窗价。 不要對已經(jīng)被 magic_quotes_gpc 轉(zhuǎn)義過的字符串使用 addslashes()如庭,因為這樣會導(dǎo)致雙層轉(zhuǎn)義。 遇到這種情況時可以使用函數(shù) get_magic_quotes_gpc() 進(jìn)行檢測撼港。
bin2hex — 函數(shù)把包含數(shù)據(jù)的二進(jìn)制字符串轉(zhuǎn)換為十六進(jìn)制值
hex2bin — 轉(zhuǎn)換十六進(jìn)制字符串為二進(jìn)制字符串
chop — rtrim 的別名
-
chr — 返回指定的字符
返回相對應(yīng)于 ascii 所指定的單個字符坪它。
此函數(shù)與 ord() 是互補(bǔ)的。
ord — 轉(zhuǎn)換字符串第一個字節(jié)為 0-255 之間的值
-
convert_uuencode — 使用 uuencode 編碼一個字符串
convert_uuencode() 使用 uuencode 算法對一個字符串進(jìn)行編碼餐胀。
uuencode 算法會將所有(含二進(jìn)制數(shù)據(jù))字符串轉(zhuǎn)化為可輸出的字符哟楷,并且可以被安全的應(yīng)用于網(wǎng)絡(luò)傳輸。使用 uuencode 編碼后的數(shù)據(jù)將會比源數(shù)據(jù)大35%左右否灾。
用法同base64_encode卖擅,可以用于對二進(jìn)制數(shù)據(jù)的編碼。
convert_uudecode — 解碼一個 uuencode 編碼的字符串
-
count_chars — 返回字符串所用字符的信息
count_chars( string $string[, int $mode = 0] ) : mixed
統(tǒng)計 string 中每個字節(jié)值(0..255)出現(xiàn)的次數(shù)墨技,使用多種模式返回結(jié)果惩阶。
mode參數(shù):
0 - 以所有的每個字節(jié)值作為鍵名,出現(xiàn)次數(shù)作為值的數(shù)組扣汪。
1 - 與 0 相同断楷,但只列出出現(xiàn)次數(shù)大于零的字節(jié)值。
-
crc32 — 計算一個字符串的 crc32 多項式
生成 str 的 32 位循環(huán)冗余校驗碼多項式崭别。這通常用于檢查傳輸?shù)臄?shù)據(jù)是否完整冬筒。
-
crypt — 單向字符串散列
password_hash()使用了一個強(qiáng)的哈希算法恐锣,來產(chǎn)生足夠強(qiáng)的鹽值,并且會自動進(jìn)行合適的輪次舞痰。password_hash()是crypt()的一個簡單封裝土榴,并且完全與現(xiàn)有的密碼哈希兼容。推薦使用password_hash()响牛。
echo — 輸出一個或多個字符串
explode — 使用一個字符串分割另一個字符串
-
implode — 將一個一維數(shù)組的值轉(zhuǎn)化為字符串
explode與implode目前盡量按照分割符參數(shù)在前玷禽,字符串或數(shù)組在后
注意:implode第一個參數(shù)分隔符可以忽略,也就是只有一個參數(shù)數(shù)組時呀打,會默認(rèn)使用空字符作為分隔符連接字符串矢赁。
implode( string $glue, array $pieces) : string
implode( array $pieces) : string
注意:join函數(shù)是implode的別名
-
get_html_translation_table — 返回使用 htmlspecialchars 和 htmlentities 后的轉(zhuǎn)換表
返回 htmlspecialchars() 和 htmlentities() 處理后的轉(zhuǎn)換表。
在很多自有框架中贬丛,我們常會看到內(nèi)部都有一個函數(shù)是用于手動替換html特殊符號的撩银,其實php自身帶了一個函數(shù)可以提供html特殊符號的函數(shù),不需要我們手動保存更新:
```php
print_r(get_html_translation_table(HTML_ENTITIES,ENT_COMPAT|ENT_QUOTES));
```
```php
Array
(
["] => "
[&] => &
['] => '
[<] => <
[>] => >
[ ] =>
[?] => ¡
[¢] => ¢
[£] => £
[¤] => ¤
[¥] => ¥
[|] => ¦
[§] => §
[¨] => ¨
[?] => ©
[a] => ª
[?] => «
[?] => ¬
...
```
-
htmlentities — 將字符轉(zhuǎn)換為 HTML 轉(zhuǎn)義字符
本函數(shù)各方面都和 htmlspecialchars() 一樣瘫寝,除了 htmlentities() 會轉(zhuǎn)換所有具有 HTML 實體的字符蜒蕾。
-
html_entity_decode — Convert HTML entities to their corresponding characters
htmlentities 的反向解碼操作。
-
htmlspecialchars — 將特殊字符轉(zhuǎn)換為 HTML 實體
通過get_html_translation_table函數(shù)可以知道焕阿,只有5個特殊符號被定義為htmlspecialchars:
["] => " [&] => & ['] => ' [<] => < [>] => >
-
htmlspecialchars_decode — 將特殊的 HTML 實體轉(zhuǎn)換回普通字符
htmlspecialchars的反向解析操作。
lcfirst — 使一個字符串的第一個字符小寫
ucfirst — 將字符串的首字母轉(zhuǎn)換為大寫
-
ucwords — 將字符串中每個單詞的首字母轉(zhuǎn)換為大寫
ucwords( string $str[, string $delimiters = " \t\r\n\f\v" ] ) : string
可選的 delimiters首启,包含了單詞分割字符暮屡。
$foo = 'hello|world!'; $bar = ucwords($foo); // Hello|world! $baz = ucwords($foo, "|"); // Hello|World!
levenshtein — 計算兩個字符串之間的編輯距離
md5_file — 計算指定文件的 MD5 散列值
-
md5 — 計算字符串的 MD5 散列值
由于此函數(shù)依賴的算法已不足夠復(fù)雜,不推薦使用此函數(shù)對明文密碼加密。如果用于創(chuàng)建密碼哈希值毅桃,建議使用password_hash() - 創(chuàng)建密碼的散列(hash)
-
metaphone — 計算str的變音鍵
與soundex()類似褒纲,metaphone為發(fā)音相似的單詞創(chuàng)建相同的鍵。它比soundex()更準(zhǔn)確钥飞,因為它知道英語發(fā)音的基本規(guī)則莺掠。變音位生成的鍵是可變長度的。
money_format — 將數(shù)字格式化成貨幣字符串
-
nl2br — 在字符串所有新行之前插入 HTML 換行標(biāo)記
在字符串 string 所有新行之前插入 '<br />' 或 '<br>'读宙,并返回彻秆。
可以理解為將\r\n替換成html換行標(biāo)簽<br /> number_format — 以千位分隔符方式格式化一個數(shù)字
-
parse_str — 將字符串解析成多個變量
parse_str( string $encoded_string[, array &$result] ) : void
如果 encoded_string 是 URL 傳遞入的查詢字符串(query string),則將它解析為變量并設(shè)置到當(dāng)前作用域(如果提供了 result 則會設(shè)置到該數(shù)組里 )结闸。
注意:我們強(qiáng)烈建議一定要帶第二個參數(shù)result唇兑,變量將會以數(shù)組元素的形式存入到這個數(shù)組。該函數(shù)沒有返回值桦锄,將由result作為替代
$str = "first=value&arr[]=foo+bar&arr[]=baz"; // 推薦用法 parse_str($str, $output); echo $output['first']; // value echo $output['arr'][0]; // foo bar echo $output['arr'][1]; // baz // 不建議這么用 parse_str($str); echo $first; // value echo $arr[0]; // foo bar echo $arr[1]; // baz
-
print — 輸出字符串
print 實際上不是函數(shù)(而是語言結(jié)構(gòu))扎附,所以可以不用圓括號包圍參數(shù)列表。
和 echo 最主要的區(qū)別: print 僅支持一個參數(shù)结耀,并總是返回 1留夜。
還是用echo吧匙铡。
printf — 輸出格式化字符串
-
sprintf — 輸出格式化字符串
可以理解為模板化輸出。
$num = 5; $location = 'tree'; $format = 'There are %d monkeys in the %s'; echo sprintf($format, $num, $location);//There are 5 monkeys in the tree
更多模板格式化符號詳見官方文檔碍粥。
-
quotemeta — 轉(zhuǎn)義元字符集
返回 在下面這些特殊字符前加 反斜線() 轉(zhuǎn)義后的字符串鳖眼。這些特殊字符包含:
. \ + * ? [ ^ ] ( $ )
setlocale — 設(shè)置地區(qū)信息
-
sha1 — 計算字符串的 sha1 散列值
由于此函數(shù)依賴的算法已不足夠復(fù)雜,不推薦使用此函數(shù)對明文密碼加密。
sha1_file — 計算文件的 sha1 散列值
與md5_file相似即纲,但算法不一樣具帮。該散列值是一個 40 字符長度的十六進(jìn)制數(shù)字。 md5_file返回32字符長度的16進(jìn)制數(shù)字低斋。-
similar_text — 計算兩個字符串的相似度
兩個字符串的相似程度計算依據(jù) Programming Classics: Implementing the World's Best Algorithms by Oliver (ISBN 0-131-00413-1) 的描述進(jìn)行蜂厅。注意該實現(xiàn)沒有使用 Oliver 虛擬碼中的堆棧,但是卻進(jìn)行了遞歸調(diào)用膊畴,這個做法可能會導(dǎo)致整個過程變慢或變快掘猿。也請注意,該算法的復(fù)雜度是 O(N**3)唇跨,N 是最長字符串的長度稠通。
similar_text( string $first, string $second[, float &$percent] ) : int
通過引用方式傳遞第三個參數(shù),similar_text() 將計算相似程度百分?jǐn)?shù)买猖。
注意:返回值是兩個字符串中匹配字符的數(shù)目改橘。而我們通常要的是相似度百分?jǐn)?shù),也就是第三個參數(shù)percent玉控。
-
soundex — Calculate the soundex key of a string
Soundex鍵具有發(fā)音相似的單詞會產(chǎn)生相同的Soundex鍵的屬性飞主,因此可以用來簡化在你知道發(fā)音但不知道拼寫的數(shù)據(jù)庫中的搜索。這個soundex函數(shù)返回一個以字母開頭的4個字符的字符串高诺。
sscanf — 根據(jù)指定格式解析輸入的字符
-
str_getcsv — 解析 CSV 字符串為一個數(shù)組
以 CSV 字段格式解析字符串輸入碌识,并返回包含讀取字段的數(shù)組。
-
str_replace — 子字符串替換
str_replace( mixed $search, mixed $replace, mixed $subject[, int &$count] ) : mixed
如果 search 和 replace 為數(shù)組虱而,那么 str_replace() 將對 subject 做二者的映射替換筏餐。如果 replace 的值的個數(shù)少于 search 的個數(shù),多余的替換將使用空字符串來進(jìn)行牡拇。如果 search 是一個數(shù)組而 replace 是一個字符串魁瞪,那么 search 中每個元素的替換將始終使用這個字符串。該轉(zhuǎn)換不會改變大小寫诅迷。
如果 search 和 replace 都是數(shù)組佩番,它們的值將會被依次處理。
$phrase = "You should eat fruits, vegetables, and fiber every day."; $healthy = ["fruits", "vegetables", "fiber"]; $yummy = ["pizza", "beer", "ice cream"]; $newphrase = str_replace($healthy, $yummy, $phrase); print_r($newphrase);//You should eat pizza, beer, and ice cream every day
如果search和replace參數(shù)都是數(shù)組的時候罢杉,需要注意一個先后查找替換問題趟畏,一個特殊的范例:
$letters = array('a', 'p'); $fruit = array('apple', 'pear'); $text = 'a p'; $output = str_replace($letters, $fruit, $text); echo $output; // 由于先查找了字符a,替換成apple滩租,之后再查找字符p赋秀,再將替換后的apple的兩個p字符又替換成pear // 輸出: apearpearle pear
str_ireplace — str_replace 的忽略大小寫版本
-
str_pad — 使用另一個字符串填充字符串為指定長度
str_pad( string $input, int $pad_length[, string $pad_string = " "[, int $pad_type = STR_PAD_RIGHT]] ) : string
支持左右填充指定字符利朵,并指定長度,默認(rèn)STR_PAD_RIGHT向右填充猎莲。
注意:如果填充字符的長度不能被 pad_string 整除绍弟,那么 pad_string 可能會被縮短。
官方范例:
$input = "Alien"; echo str_pad($input, 10); // 輸出 "Alien " echo str_pad($input, 10, "-=", STR_PAD_LEFT); // 輸出 "-=-=-Alien" echo str_pad($input, 10, "_", STR_PAD_BOTH); // 輸出 "__Alien___" echo str_pad($input, 6, "___"); // 輸出 "Alien_" echo str_pad($input, 3, "*"); // 輸出 "Alien"
-
str_repeat — 重復(fù)一個字符串
str_repeat( string $input, int $multiplier) : string
返回 字符串input 重復(fù) multiplier 次后的結(jié)果字符串著洼。
echo str_repeat("-=", 5); //-=-=-=-=-=
-
str_rot13 — 對字符串執(zhí)行 ROT13 轉(zhuǎn)換
在比較舊的php代碼中我們也會看一些借鑒str_rot13的加密算法樟遣,可以用來混淆∩眢裕可能混淆算法不一定采用之后的第13個字符替換法豹悬。
ROT13 編碼簡單地使用字母表中后面第 13 個字母替換當(dāng)前字母,同時忽略非字母表中的字符液荸。編碼和解碼都使用相同的函數(shù)瞻佛,傳遞一個編碼過的字符串作為參數(shù),將得到原始字符串娇钱。
echo str_rot13("Tsing1");//Gfvat1 echo str_rot13("Gfvat1");//Tsing1
-
str_shuffle — 隨機(jī)打亂一個字符串
每次返回都是隨機(jī)的伤柄,不一樣的字符串
-
str_split — 將字符串轉(zhuǎn)換為數(shù)組
將一個字符串轉(zhuǎn)換為數(shù)組,如果第二個參數(shù)默認(rèn)是1時文搂,返回的就是字符數(shù)組适刀,字符串的每個字符就是數(shù)組中的一個元素。
第二參數(shù)是將返回的數(shù)組的每個元素的長度煤蹭,比如設(shè)置為3蔗彤,則返回的數(shù)組中的每個元素都是長度為3的字符串。
$str = "Hello Friend"; $arr1 = str_split($str); $arr2 = str_split($str, 3); //print_r($arr1); print_r($arr2);
輸出:
Array ( [0] => Hel [1] => lo [2] => Fri [3] => end )
str_word_count — 返回字符串中單詞的使用情況
-
strcmp — 二進(jìn)制安全字符串比較
如果 str1 小于 str2 返回 < 0疯兼;如果 str1 大于 str2 返回 > 0;如果兩者相等贫途,返回 0吧彪。
注意:該函數(shù)不是人習(xí)慣的自然排序算法,可以考慮使用strnatcmp的字符串比較函數(shù)丢早。
strcasecmp — 二進(jìn)制安全比較字符串(不區(qū)分大小寫)
strncmp — 二進(jìn)制安全比較字符串開頭的若干個字符
strncasecmp — 二進(jìn)制安全比較字符串開頭的若干個字符(不區(qū)分大小寫)
-
strip_tags — 從字符串中去除 HTML 和 PHP 標(biāo)記
該函數(shù)嘗試返回給定的字符串 str 去除空字符姨裸、HTML 和 PHP 標(biāo)記后的結(jié)果。
注意:由于 strip_tags() 無法實際驗證 HTML怨酝,不完整或者破損標(biāo)簽將導(dǎo)致更多的數(shù)據(jù)被刪除傀缩。
stripslashes — 反轉(zhuǎn)義一個使用類似使用addslashes 轉(zhuǎn)義的字符串
-
strpos — 查找字符串首次出現(xiàn)的位置
strpos( string $haystack, mixed $needle[, int $offset = 0] ) : int
在字符串needle,返回needle在haystack中首次出現(xiàn)的數(shù)字位置农猬。
needle:建議一定要是字符串赡艰。
offset:如果提供了此參數(shù),搜索會從字符串該字符數(shù)的起始位置開始統(tǒng)計斤葱。如果是負(fù)數(shù)慷垮,搜索會從字符串結(jié)尾指定字符數(shù)開始揖闸。
返回 needle 存在于 haystack 字符串起始的位置(獨立于 offset)。同時注意字符串位置是從0開始料身,而不是從1開始的汤纸。如果沒找到 needle,將返回 FALSE芹血。
注意:strpos的參數(shù)順序贮泞,和explode等其他字符串函數(shù)不大一樣,strpos第一個參數(shù)是完整字符串幔烛,第二個參數(shù)needle是用于查找的子串或字符啃擦。
stripos — 查找字符串首次出現(xiàn)的位置(不區(qū)分大小寫)
-
strrpos — 計算指定字符串在目標(biāo)字符串中最后一次出現(xiàn)的位置
注意:區(qū)別于strpos指定字符在目標(biāo)字符串最后一次出現(xiàn)的位置。
strripos — 計算指定字符串在目標(biāo)字符串中最后一次出現(xiàn)的位置(不區(qū)分大小寫)
-
strstr — 查找字符串的首次出現(xiàn)说贝,并返回第一次出現(xiàn)的位置開始到結(jié)尾的字符串
strstr( string $haystack, mixed $needle[, bool $before_needle = FALSE] ) : string
返回 haystack 字符串從 needle 第一次出現(xiàn)的位置開始到 haystack 結(jié)尾的字符串议惰。
注意:strchr函數(shù)是strstr的別名函數(shù)
$url = 'http://www.9ong.com'; $domain = strstr($url, '//'); echo $domain; // 輸出://www.9ong.com
stristr — strstr 函數(shù)的忽略大小寫版本
-
strrchr — 查找指定字符在字符串中的最后一次出現(xiàn)
該函數(shù)返回 haystack 字符串中的一部分,這部分以 needle 的最后出現(xiàn)位置開始乡恕,直到 haystack 末尾言询。
注意:該函數(shù)對應(yīng)正向函數(shù)是strchr也就是strstr,如果strrchr函數(shù)的needle參數(shù)包含不止一個字符傲宜,僅使用第一個字符运杭。該參數(shù)行為不同于strstr函數(shù)。
注意:如果 needle 不是一個字符串函卒,那么將被轉(zhuǎn)化為整型并被視為字符順序值辆憔。
$nl = chr(10);//\n ASCII echo nl2br($nl); $text = "Line 1\nLine 2\nLine 3"; $last = substr(strrchr($text, 10), 1 ); echo $last; //輸出: //<br /> //Line 3
strlen — 獲取字符串長度
-
strnatcmp — 使用自然排序算法比較字符串
該函數(shù)實現(xiàn)了以人類習(xí)慣對數(shù)字型字符串進(jìn)行排序的比較算法,這就是"自然順序"报嵌。
返回值:與其他字符串比較函數(shù)類似虱咧,如果 str1 小于 str2 返回 < 0;如果 str1 大于 str2 返回 > 0锚国;如果兩者相等腕巡,返回 0。
strnatcasecmp — 使用“自然順序”算法比較字符串(不區(qū)分大小寫)
-
strpbrk — 在字符串中查找一組字符的任何一個字符
返回一個以找到的字符開始的子字符串血筑。如果沒有找到绘沉,則返回 FALSE。
-
strrev — 反轉(zhuǎn)字符串
hello反轉(zhuǎn)后就是:olleh
-
strtok — 標(biāo)記分割字符串
返回值類似于一個迭代器豺总。如果不熟悉使用方式车伞,分割字符串建議使用explode、preg_split喻喳。注意:split已經(jīng)不再建議使用另玖,而str_split不支持指定分隔字符(串),是將字符串按單個字符分隔轉(zhuǎn)換成字符數(shù)組。
$string = "This is\tan example\nstring"; /* 使用制表符和換行符作為分界符 */ $tok = strtok($string, " \n\t"); while ($tok !== false) { echo "Word=$tok\n"; $tok = strtok(" \n\t"); }
輸出:
Word=This Word=is Word=an Word=example Word=string
strtolower — 將字符串轉(zhuǎn)化為小寫
strtoupper — 將字符串轉(zhuǎn)化為大寫
-
strtr — 轉(zhuǎn)換指定字符日矫,可用于實現(xiàn)字符串替換赂弓,類似于str_replace,但又更簡潔實用
函數(shù)支持兩種方式:
strtr( string $str, string $from, string $to) : string strtr( string $str, array $replace_pairs) : string
該函數(shù)返回 str 的一個副本哪轿,并將在 from 中指定的字符轉(zhuǎn)換為 to 中相應(yīng)的字符盈魁。比如, n]中每次的出現(xiàn)都會被替換為 n]窃诉,其中 $n 是兩個參數(shù)都有效的字符串位移(offset)杨耙,通俗點說就是字符串?dāng)?shù)組的下標(biāo)。
如果 from 與 to 長度不相等飘痛,那么多余的字符部分將被忽略珊膜。 str 的長度將會和返回的值一樣。
如果給出兩個參數(shù)宣脉,第二個參數(shù)應(yīng)該是array形式的數(shù)組('from' => 'to'车柠,…)。返回值是一個字符串塑猖,其中所有出現(xiàn)的數(shù)組鍵都被相應(yīng)的值所替換竹祷。最長的鍵將首先嘗試。一旦子字符串被替換羊苟,它的新值將不再被搜索塑陵,這個是有區(qū)別于str_replace前兩個參數(shù)都是數(shù)組的形式,str_replace會有先后替換順序蜡励。
echo strtr("baab", "ab", "01"),"\n"; $trans = array("ab" => "01"); echo strtr("baab", $trans),"\n"; $trans = array("a" => "apple","p"=>"pear"); echo strtr("a p", $trans),"\n"; echo str_replace(["a","p"], ["apple",'pear'], 'a p'),"\n";
輸出:
1001 ba01 apple pear apearpearle pear
-
substr — 返回字符串的子串
substr( string $string, int $start[, int $length] ) : string
-
start
如果 start 是非負(fù)數(shù)令花,返回的字符串將從 string 的 start 位置開始,從 0 開始計算凉倚。例如兼都,在字符串 "abcdef" 中,在位置 0 的字符是 "a"稽寒,位置 2 的字符串是 "c" 等等俯抖。
如果 start 是負(fù)數(shù),返回的字符串將從 string 結(jié)尾處向前數(shù)第 start 個字符開始瓦胎。
如果 string 的長度小于 start,將返回 FALSE尤揣。
-
length
如果沒有提供 length搔啊,默認(rèn)返回的子字符串將從 start 位置開始直到字符串結(jié)尾。
如果提供了正數(shù)的 length北戏,返回的字符串將從 start 處開始最多包括 length 個字符(取決于 string 的長度)负芋。
如果提供了負(fù)數(shù)的 length,那么 string 末尾處的 length 個字符將會被省略。
如果提供了值為 0旧蛾,F(xiàn)ALSE 或 NULL 的 length莽龟,那么將返回一個空字符串。
-
```php
echo substr("abcdef", -2),"\n"; // 返回 "ef"
echo substr("abcdef", -3, 1),"\n"; // 返回 "d"
echo substr("abcdef", 0, -1),"\n"; // 返回 "abcde" 忽略末尾1個字符f
echo substr("abcdef", 2, -1),"\n"; // 返回 "cde" 忽略末尾1個字符f
echo substr("abcdef", 2, -4),"\n"; // 返回 ""
echo substr("abcdef", -3, -2),"\n"; // 返回 "d" 忽略末尾2個字符ef
```
-
substr_count — 計算子串出現(xiàn)的次數(shù)
substr_count( string $haystack, string $needle[, int $offset = 0[, int $length]] ) : int
注意:該函數(shù)不會計算重疊字符串锨天;函數(shù)還支持offset毯盈,即從哪里開始查找計算;函數(shù)支持length病袄,即查找到哪里搂赋;
$text = 'This is a test'; echo substr_count($text, 'is'),"\n"; // 2 $test = "xxxxx"; echo substr_count($test, "xx"),"\n";//2
-
substr_replace — 替換字符串的子串
substr_replace( mixed $string, mixed $replacement, mixed $start[, mixed $length] ) : mixed
通俗上說,先通過start與length截取字符串中的子串益缠,然后再將子串替換成replacement脑奠。相當(dāng)于substr+replace的功能。start與length參考substr函數(shù)幅慌。
$var = "-tsingchan-"; //將9ong插入到 $var 的開頭處 echo substr_replace($var, '9ong', 0, 0) . "\n";//9ong-tsingchan- //下面兩個例子使用9ong替換 $var 中的 chan echo substr_replace($var, '9ong', 6, -1) . "\n";//-tsing9ong- echo substr_replace($var, '9ong', -5, -1) . "\n";//-tsing9ong- //從 $var 中刪除chan echo substr_replace($var, '', 6, -1) . "\n";//-tsing-
-
substr_compare — 二進(jìn)制安全比較字符串(從偏移位置比較指定長度)
截取子串后宋欺,再進(jìn)行比較字符串,但不是自然排序的比較胰伍。
-
trim — 去除字符串首尾處的空白字符(或者其他字符)
trim( string $str[, string $character_mask = " \t\n\r\0\x0B"] ) : string
trim很簡單齿诞,但又不是那么簡單,主要看第二個參數(shù)character_mask:
character_mask是可選參數(shù)喇辽,過濾字符也可由 character_mask 參數(shù)指定掌挚。一般要列出所有希望過濾的字符,也可以使用 ".." 列出一個字符范圍菩咨。
首先吠式,character_mask默認(rèn)過濾空白符,包含空格抽米、制表符特占、換行符、回車符等空白符云茸;
其次是目,可以自定義character_mask字符,注意如果設(shè)置的是一個字符串(多字符)标捺,那么每個字符都會按trim的規(guī)則首尾檢查并對應(yīng)過濾懊纳,而不是過濾一個字符串;
最后亡容,character_mask參數(shù)支持..來包含一個字符范圍嗤疯,比如我們常用的ASCII控制符范圍。
官方文檔例子:
$text = "\t\tThese are a few words :) ... "; $binary = "\x09Example string\x0A"; $hello = "Hello World"; //var_dump($text, $binary, $hello); $trimmed = trim($text); echo $trimmed,"\n";//These are a few words :) ... $trimmed = trim($text, " \t.");//注意:尾巴的三個.字符都被過濾 echo $trimmed,"\n";//These are a few words :) $trimmed = trim($hello, "Hdle");//注意:不是簡單的過濾Hdle字符串闺兢,而4個字符H d l e一一在首尾檢查并過濾 echo ($trimmed),"\n";//o Wor // 清除 $binary 首位的 ASCII 控制字符 // (包括 0-31) $clean = trim($binary, "\x00..\x1F");//支持..范圍檢查過濾 echo $clean,"\n";//Example string
-
ltrim — 刪除字符串開頭的空白字符(或其他字符)
同trim茂缚,只是去除字符串左側(cè)(首部)的指定字符。
-
rtrim — 刪除字符串末端的空白字符(或者其他字符)
同trim,只是去除字符串右側(cè)(尾部)的指定字符脚囊。
-
vprintf — 輸出格式化字符串
vprintf( string $format, array $args) : int
根據(jù) format (sprintf() 函數(shù)文檔中有相關(guān)描述)參數(shù)指定的格式龟糕,在一個格式化字符串中顯示多個值。
作用與 printf() 函數(shù)類似悔耘,但是接收一個數(shù)組參數(shù)讲岁,而不是一系列可變數(shù)量的參數(shù)。
vprintf("%04d-%02d-%02d", explode('-', '2020-1-1')); // 2020-01-01
vsprintf — 返回格式化字符串
```php
vsprintf( string $format, array $args) : string
```
注意是返回淮逊,而不是直接輸出催首。
作用與 sprintf() 函數(shù)類似,但是接收一個數(shù)組參數(shù)泄鹏,而不是一系列可變數(shù)量的參數(shù)郎任。
作用于vprintf一樣,但不直接輸出而是返回字符串备籽。
```php
echo vsprintf("%04d-%02d-%02d", explode('-', '2020-1-1')); // 2020-01-01
```
- vfprintf — 將格式化字符串寫入流
向由 handle 指定的流資源句柄中寫入根據(jù) format 格式化后的字符串舶治。 同vprintf,但多了個參數(shù)handle车猬,是輸出寫入流霉猛。
```php
vfprintf( resource $handle, string $format, array $args) : int
```
-
關(guān)于格式化字符串說明符
% 文字百分比字符。不需要任何參數(shù)珠闰。 b 該參數(shù)被視為整數(shù)惜浅,并以二進(jìn)制數(shù)表示。 c 該參數(shù)被視為整數(shù)伏嗜,并以該ASCII形式顯示為字符坛悉。 d 該參數(shù)被視為整數(shù),并以(有符號的)十進(jìn)制數(shù)表示承绸。 e 該論點被視為科學(xué)記數(shù)法(例如1.2e + 2)裸影。精度說明符表示自PHP 5.2.1起小數(shù)點后的位數(shù)。在早期版本中军熏,它被視為有效數(shù)字(少一位)轩猩。 E 類似于說明e符,但使用大寫字母(例如1.2E + 2)荡澎。 f 該參數(shù)被視為浮點數(shù)均践,并顯示為浮點數(shù)(可識別語言環(huán)境)。 F 該參數(shù)被視為浮點數(shù)摩幔,并被表示為浮點數(shù)(不支持區(qū)域設(shè)置)浊猾。自PHP 5.0.3起可用。 o 該參數(shù)被視為整數(shù)热鞍,并以八進(jìn)制數(shù)表示。 s 該參數(shù)被視為字符串顯示。 u 該參數(shù)被視為整數(shù)薇宠,并以無符號十進(jìn)制數(shù)形式出現(xiàn)偷办。 x 該參數(shù)被視為整數(shù),并以十六進(jìn)制數(shù)字(帶有小寫字母)的形式呈現(xiàn)澄港。 X 該參數(shù)被視為整數(shù)椒涯,并以十六進(jìn)制數(shù)字(帶有大寫字母)的形式呈現(xiàn)。
-
wordwrap — 打斷字符串為指定數(shù)量的字串
wordwrap( string $str[, int $width = 75[, string $break = "\n"[, bool $cut = FALSE]]] ) : string
通過指定width寬度智能打斷字符串回梧,插入break符號废岂,比如換行符∮猓看函數(shù)名wordwrap湖苞,有接觸過css就大概知道函數(shù)的功能了,css的word-wrap屬性:允許長單詞換行到下一行详囤,達(dá)到自動換行的效果财骨。
如果 參數(shù)cut 設(shè)置為 TRUE,字符串總是在指定的 width 或者之前位置被打斷藏姐。因此隆箩,如果有的單詞寬度超過了給定的寬度,它將被分隔開來羔杨。(參見第二個范例)捌臊。當(dāng)它是 FALSE ,函數(shù)不會分割單詞兜材,哪怕 width 小于單詞寬度理澎。
```php
$text = "A very long woooooooooooooooooord. and something";
$cut = false;
$newtext = wordwrap($text, 9, "\n", $cut);
echo "$newtext\n";
```
輸出:
```php
//如果cut為 false 則:
A very
long
woooooooooooooooooord.
and
something
```
```php
//如果cut為 true 則:
A very
long
woooooooo
ooooooooo
ord. and
something
```
本文內(nèi)容較長,如有被截斷或缺失护姆,請參考原文:
PHP函數(shù)參考24-常用字符串函數(shù) - 9ong
PHP函數(shù)參考25-常用數(shù)組函數(shù) - 9ong