先說明:網上目前有很多這個問題的代碼,但是很多都是復制粘貼,沒有自己實踐,而且代碼有邏輯問題,下面的代碼由我自己編寫。
話不多說
/** * 該函數是對于utf8編碼 * @author 2582308253@qq.com * @param string $str * @param int $start * @param int $length * @return string * @copyright 2017年2月27日下午1:46:10 */ function gbsubstr2($str, $start, $length) { $length = abs($length); $strLen = strlen($str); $len = $start + $length; $newStr = ''; for($i = $start; $i < $len && $i < $strLen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { //utf8編碼中一個漢字是占據3個字節的,對于其他的編碼的字符串,中文占據的字節各有不同,自己需要去修改這個數a $newStr .= substr($str, $i, 3);//此處a=3; $i+=2; $len += 2; //截取了三個字節之后,截取字符串的終止偏移量也要隨著每次漢字的截取增加a-1; } else { $newStr .= substr($str, $i, 1); } } return $newStr; }
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持!
【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。