先說明:網上目前有很多這個問題的代碼,但是很多都是復制粘貼,沒有自己實踐,而且代碼有邏輯問題,下面的代碼由我自己編寫。
話不多說:
- /**
- * 該函數是對于utf8編碼
- * @author 2582308253@qq.com
- * @param string $str
- * @param int $start
- * @param int $length
- * @return string
- * @copyright 2017年2月27日下午1:46:10
- */
- functiongb<a href="/tags.php/substr/" target="_blank">substr</a>2($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;
- }
新聞熱點
疑難解答