Heim > Backend-Entwicklung > PHP-Tutorial > php截取中文的函数utf_substr

php截取中文的函数utf_substr

WBOY
Freigeben: 2016-07-25 08:58:44
Original
887 Leute haben es durchsucht
  1. $tmp = preg_replace('/[一-龥]/u','','你好我是谁?123abc');
  2. /u是UTF-8
复制代码

代码1,PHP截取UTF-8字符串,解决半字符问题

  1. /***

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

  23. $str = utf_substr('你好',4);
  24. echo $str;
  25. ?>
复制代码

代码2,截取utf-8字符串函数

  1. /**

  2. * 截取utf-8字符串
  3. * edit bbs.it-home.org
  4. */
  5. function cut_str($sourcestr,$cutlength){
  6. $returnstr='';
  7. $i=0;
  8. $n=0;
  9. $str_length=strlen($sourcestr);//字符串的字节数
  10. while (($n $temp_str=substr($sourcestr,$i,1);
  11. $ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码
  12. if ($ascnum>=224){ //如果ASCII位高与224,
  13. $returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符
  14. $i=$i+3; //实际Byte计为3
  15. $n++; //字串长度计1
  16. }elseif ($ascnum>=192){ //如果ASCII位高与192,
  17. $returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
  18. $i=$i+2; //实际Byte计为2
  19. $n++; //字串长度计1
  20. }elseif ($ascnum>=65 && $ascnum $returnstr=$returnstr.substr($sourcestr,$i,1);
  21. $i=$i+1; //实际的Byte数仍计1个
  22. $n++; //但考虑整体美观,大写字母计成一个高位字符
  23. }else{ //其他情况下,包括小写字母和半角标点符号,
  24. $returnstr=$returnstr.substr($sourcestr,$i,1);
  25. $i=$i+1; //实际的Byte数计1个
  26. $n=$n+0.5; //小写字母和半角标点等与半个高位字符宽...
  27. }
  28. }
  29. if ($str_length>$cutlength){
  30. $returnstr = $returnstr . "...";//超过长度时在尾处加上省略号
  31. }
  32. return $returnstr;
  33. }
  34. //调用示例

  35. $str = '你好!我好';
  36. $str = cut_str($str,3);
  37. echo $str;
  38. ?>
复制代码


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage