代码片段-PHP-UTF8中文字符截断
今天需要用一个UTF-8的字符串截断函数,网上找了几个代码片段发现都有问题,于是查了一下原理自己写了一个函数,代码片段如下:http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttp://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gifView Code <div id="cnblogs_code_open_57742293-d188-4c5c-862a-220f7896929c" class="cnblogs_code_hide"> 1 <?php 2 /* UTF-8中文字符截断程序 */ 3 4 5 $str = "123这是测试字符串"; 6 $str1 = "()()"; 7 echo subUTF8str($str,0,3)."<br>"; 8 echo subUTF8str($str,0,4)."<br>"; 9 echo subUTF8str($str1,0,4)."<br>";10 echo subUTF8str($str1,0,10)."<br>";11 12 function subUTF8str($str,$start=0,$length=80){ 13 $cur_len = 0; //人理解的字符串长度14 $all_len = strlen($str); //机器理解字符串长度15 if($length > $all_len)16 {17 return $str;18 }19 for($i = 0;$i < $all_len;)20 {21 if($cur_len == $start)22 {23 break;24 }25 if (ord($str[$i]) > 127)26 {27 $i += 3;28 }else{29 $i += 1;30 }31 $cur_len ++;32 }33 $start_pos = $i;34 $temp_pos = $cur_len;35 for(;$cur_len - $temp_pos < $length;)36 {37 if($i >= $all_len)38 break;39 if (ord($str[$i]) > 127)40 {41 $i += 3;42 }else{43 $i += 1;44 }45 $cur_len ++;46 }47 $end_pos = $i;48 return substr($str,$start_pos,$end_pos);49 } 50 ?>
页:
[1]