先說明:網(wǎng)上目前有很多這個(gè)問題的代碼,但是很多都是復(fù)制粘貼,沒有自己實(shí)踐,而且代碼有邏輯問題,下面的代碼由我自己編寫。
話不多說:
- /**
- * 該函數(shù)是對(duì)于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編碼中一個(gè)漢字是占據(jù)3個(gè)字節(jié)的,對(duì)于其他的編碼的字符串,中文占據(jù)的字節(jié)各有不同,自己需要去修改這個(gè)數(shù)a
- $newStr.=substr($str,$i, 3);//此處a=3;
- $i+=2;
- $len+= 2;//截取了三個(gè)字節(jié)之后,截取字符串的終止偏移量也要隨著每次漢字的截取增加a-1;
- }else{
- $newStr.=substr($str,$i, 1);
- }
- }
- return$newStr;
- }
新聞熱點(diǎn)
疑難解答