您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關php中字符串截取的方法是什么的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
方法:1、用“substr(字符串,開始位置,截取長度)”語句;2、用“mb_substr(字符串,開始位置,截取長度,編碼)”語句;3、用“mb_strcut(字符串,開始位置,截取長度,編碼)”語句;4、用“$str[字符位置]”語句。
本教程操作環境:windows7系統、PHP7.1版,DELL G3電腦
如果截取的字符串是多個字節,就會出現亂碼,比如中文,適用于截取字母和數字
$str = 'hello'; echo substr($str,1,2);//輸出el
適用于截取中文,按字來切分
echo mb_substr('這個真的很nice',0,3,'utf-8'); //輸出這個真
按照字節來切分
echo mb_strcut('這個真的很nice',0,3,'utf-8'); //輸出這
將字符串看做字符集合,中文不適用哦!
$str = 'hello'; echo $str[0];//輸出h
有時字符串中含有中英文數字等,所以自定義一個不區分中英文的函數來切分字符串
/** * * 中英混合的字符串截取 * @param 待截取字符串 $sourcestr * @param 截取長度 $cutlength */ function sub_str($sourcestr, $cutlength) { $returnstr = '';//待返回字符串 $i = 0; $n = 0; $str_length = strlen ( $sourcestr ); //字符串的字節數 while ( ($n < $cutlength) and ($i <= $str_length) ) { $temp_str = substr ( $sourcestr, $i, 1 ); $ascnum = Ord ( $temp_str ); //得到字符串中第$i位字符的ascii碼 if ($ascnum >= 224) {//如果ASCII位高與224, $returnstr = $returnstr . substr ( $sourcestr, $i, 3 ); //根據UTF-8編碼規范,將3個連續的字符計為單個字符 $i = $i + 3; //實際Byte計為3 $n ++; //字串長度計1 } elseif ($ascnum >= 192){ //如果ASCII位高與192, $returnstr = $returnstr . substr ( $sourcestr, $i, 2 ); //根據UTF-8編碼規范,將2個連續的字符計為單個字符 $i = $i + 2; //實際Byte計為2 $n ++; //字串長度計1 } elseif ($ascnum >= 65 && $ascnum <= 90) {//如果是大寫字母, $returnstr = $returnstr . substr ( $sourcestr, $i, 1 ); $i = $i + 1; //實際的Byte數仍計1個 $n ++; //但考慮整體美觀,大寫字母計成一個高位字符 }elseif ($ascnum >= 97 && $ascnum <= 122) { $returnstr = $returnstr . substr ( $sourcestr, $i, 1 ); $i = $i + 1; //實際的Byte數仍計1個 $n ++; //但考慮整體美觀,大寫字母計成一個高位字符 } else {//其他情況下,半角標點符號, $returnstr = $returnstr . substr ( $sourcestr, $i, 1 ); $i = $i + 1; $n = $n + 0.5; } } return $returnstr; }
感謝各位的閱讀!關于“php中字符串截取的方法是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。