PHP截取字符串substr()函數(shù)用法詳解
substr() 可以「截取」字符串。
語法
string substr( $str, start, length);
參數(shù)
- $str :被截取的字符串。
- start :開始截取的位置。
- length :截取的長度。
返回值
- 截取成功,就返回截取的字符串
- start 超過字符串長度,就返回 false
- start 和 length 設(shè)置成不合理的截取范圍,就返回空字符串
一、截取字符串
1)字符串的「索引」從0開始,「空格」也算一個(gè)字符。
實(shí)例1:從左邊第6個(gè)字符開始,往右截取4個(gè)字符。
echo substr('0123456789',6,4).PHP_EOL; echo substr('01234 6789',6,4);
輸出:
6789
6789
2) start 和 length 可以為負(fù)數(shù),負(fù)數(shù)就是相反的意思。
實(shí)例2:從右邊第6個(gè)字符開始,往右截取4個(gè)字符。
echo substr('9876543210',-6,4);
輸出:
5432
實(shí)例3:從左邊第6個(gè)字符開始,截取到右邊第3個(gè)字符。
echo substr('0123456789321',6,-3);
輸出:
67893
實(shí)例4:從右邊第6個(gè)字符開始,截取到右邊第4個(gè)字符。
echo substr('9876543210',-6,-4);
輸出:
54
二、截取中文字符串
「英文」字符占1個(gè)字節(jié),UTF8編碼的「中文」占3個(gè)字節(jié),GB2321編碼的中文占2個(gè)字節(jié)。
截取中文時(shí),一個(gè)(UTF8編碼)中文要當(dāng)做3個(gè)字符串來截取, start 和 length 的值得是「3的倍數(shù)」,否則會(huì)截取到亂碼。
實(shí)例:
echo substr('零一二三四五六七八九',0,3).PHP_EOL; echo substr('零一二三四五六七八九',3,3).PHP_EOL; echo substr('零一二三四五六七八九',3,1);
輸出:
零
一
?
三、length的特殊值
1) length 可以省略,默認(rèn)截取到字符串「末尾」。
實(shí)例:
echo substr('0123',1).PHP_EOL; echo substr('0123',-1);
輸出:
123
3
2) length 為 0,null,false 時(shí),表示截取 0 個(gè)字符, substr() 會(huì)返回空字符串。
實(shí)例:
var_dump(substr('0123',1,0)); var_dump(substr('0123',1,null)); var_dump(substr('0123',1,false));
輸出:
string(0) ""
string(0) ""
string(0) ""
四、start的特殊值
1) start 超過字符串「長度」時(shí),會(huì)返回false。
實(shí)例:
var_dump(substr('0123',11));
輸出:
bool(false)
2) start 可以是數(shù)值型字符串,但內(nèi)容必須是「純數(shù)字」,否則會(huì)報(bào)錯(cuò)。
實(shí)例:
var_dump(substr('0123','0'));
輸出:
string(4) "0123"
3) start 可以是「布爾類型」( true=1;false=0 )。
實(shí)例:
var_dump(substr('0123',true)); var_dump(substr('0123',false));
輸出:
string(3) "123"
string(4) "0123"
4) start 包含運(yùn)算符時(shí),會(huì)先「運(yùn)算」,再將運(yùn)算結(jié)果「賦值」給 start 。
實(shí)例:
var_dump(substr('0123',1+1)); var_dump(substr('0123',1*2)); var_dump(substr('0123',~~2)); var_dump(substr('0123',1&1));
輸出:
string(2) "23"
string(2) "23"
string(2) "23"
string(3) "123"
5) start 為十六進(jìn)制時(shí),會(huì)自動(dòng)轉(zhuǎn)換為0進(jìn)制。
實(shí)例:11的十六進(jìn)制是 0xB
var_dump(substr('0123456789abcde',0xB));
輸出:
string(4) "bcde"
到此這篇關(guān)于PHP截取字符串substr()函數(shù)用法詳解的文章就介紹到這了,更多相關(guān)PHP substr()函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
php數(shù)組函數(shù)序列 之shuffle()和array_rand() 隨機(jī)函數(shù)使用介紹
shuffle與array_rand定義和用法,需要的朋友可以參考下。2011-10-10基于asp+ajax和數(shù)據(jù)庫驅(qū)動(dòng)的二級(jí)聯(lián)動(dòng)菜單
基于asp+ajax和數(shù)據(jù)庫驅(qū)動(dòng)的二級(jí)聯(lián)動(dòng)菜單,需要的朋友可以參考下。2010-05-05PHP實(shí)現(xiàn)視頻文件上傳完整實(shí)例
這篇文章主要介紹了PHP實(shí)現(xiàn)視頻文件上傳的技巧,包含了PHP配置信息的設(shè)計(jì)及大文件的處理,需要的朋友可以參考下2014-08-08php中字符查找函數(shù)strpos、strrchr與strpbrk用法
這篇文章主要介紹了php中字符查找函數(shù)strpos、strrchr與strpbrk用法,以實(shí)例形式較為詳細(xì)的分析了php中字符查找函數(shù)strpos、strrchr與strpbrk的具體用法及相關(guān)注意事項(xiàng),非常實(shí)用,需要的朋友可以參考下2014-11-11PHP中filter函數(shù)校驗(yàn)數(shù)據(jù)的方法詳解
這篇文章主要是介紹PHP中filter函數(shù)校驗(yàn)數(shù)據(jù)的方法詳解,PHP過濾器包含兩種類型:Validation用來驗(yàn)證驗(yàn)證項(xiàng)是否合法 、Sanitization用來格式化被驗(yàn)證的項(xiàng)目,因此它可能會(huì)修改驗(yàn)證項(xiàng)的值,將不合法的字符刪除,需要的朋友可以參考下2015-07-07Zend Framework上傳文件重命名的實(shí)現(xiàn)方法
這篇文章主要介紹了Zend Framework上傳文件重命名的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Zend Framework上傳文件重命名的具體操作步驟與配置、檢測(cè)、重命名操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-11-11PHP實(shí)現(xiàn)的一致性哈希算法完整實(shí)例
這篇文章主要介紹了PHP實(shí)現(xiàn)的一致性哈希算法,以完整實(shí)例形式分析了PHP哈希算法的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11