PHP截取中文字符串的方法

PHP截取中文字符串方法总结。

程序一:PHP截取中文字符串方法

由于网站首页以及vTigerCRM里经常在截取中文字符串时出现乱码(使用substr)。
一个比较好的 php截取中文字符串方法,在此与大家共享。

  1. function msubstr($str$start$len) {  
  2.     $tmpstr = "";  
  3.     $strlen = $start + $len;  
  4.     for($i = 0; $i < $strlen$i++) {  
  5.         if(ord(substr($str$i, 1)) > 0xa0) {  
  6.             $tmpstr .= substr($str$i, 2);  
  7.             $i++;  
  8.         } else  
  9.             $tmpstr .= substr($str$i, 1);  
  10.     }  
  11.     return $tmpstr;  
  12. }  

程序二:PHP截取UTF-8字符串,解决半字符问题

  1. /****************************************************************** 
  2. * PHP截取UTF-8字符串,解决半字符问题。 
  3. * 英文、数字(半角)为1字节(8位),中文(全角)为3字节 
  4. * @return 取出的字符串, 当$len小于等于0时, 会返回整个字符串 
  5. * @param $str 源字符串 
  6. * $len 左边的子串的长度 
  7. ****************************************************************/  
  8. function utf_substr($str,$len)  
  9. {  
  10. for($i=0;$i<$len;$i++)  
  11. {  
  12. $temp_str=substr($str,0,1);  
  13. if(ord($temp_str) > 127)  
  14. {  
  15. $i++;  
  16. if($i<$len)  
  17. {  
  18. $new_str[]=substr($str,0,3);  
  19. $str=substr($str,3);  
  20. }  
  21. }  
  22. else  
  23. {  
  24. $new_str[]=substr($str,0,1);  
  25. $str=substr($str,1);  
  26. }  
  27. }  
  28. return join($new_str);  
  29. }  
  30. ?>  
php utf-8 字符串截取

  1. <?  
  2. //截取字符串 utf-8  
  3. //site www.jbxue.com  
  4. function cutstr($string$length) {  
  5.         preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"$string$info);    
  6.         for($i=0; $i<count($info[0]); $i++) {  
  7.                 $wordscut .= $info[0][$i];  
  8.                 $j = ord($info[0][$i]) > 127 ? $j + 2 : $j + 1;  
  9.                 if ($j > $length - 3) {  
  10.                         return $wordscut." ...";  
  11.                 }  
  12.         }  
  13.         return join(''$info[0]);  
  14. }  
  15. $string="242432反对感是456犯得上广泛大使馆地方7890";  
  16. for($i=0;$i<strlen($string);$i++)  
  17. {  
  18.  echo cutstr($string,$i)."<br>";  
  19. }  
  20. ?>  

你可能感兴趣的:(PHP截取中文字符串的方法)