>  기사  >  백엔드 개발  >  중국어 문자열의 길이를 계산하고 PHP에서 중국어 문자열을 가로채기

중국어 문자열의 길이를 계산하고 PHP에서 중국어 문자열을 가로채기

巴扎黑
巴扎黑원래의
2016-11-11 13:39:351138검색

PHP 개발을 하다 보면 우리나라의 언어 환경 문제로 인해 중국어를 다루어야 하는 경우가 많습니다. PHP에는 중국어의 길이를 가로채서 계산할 수 있는 특별한 mb_substr 및 mb_strlen 함수가 있다는 것을 우리 모두 알고 있습니다. 그러나 이러한 함수는 PHP의 핵심 기능이 아니기 때문에 활성화되지 않을 수 있습니다. 물론, 자체 서버를 사용하는 경우 php.ini에서만 활성화하면 됩니다. 가상호스트를 사용하는데 서버가 이 기능을 활성화하지 않는다면, 우리 나라 상황에 맞는 일부 기능을 작성해야 합니다.

다음 기능은 사용하기 매우 쉽습니다. 하지만 반드시 utf-8 환경에서 사용해야 한다는 점을 아셔야 합니다.

gb2312, gbk, utf-8, big5 중국어 차단 방식 지원

/*  
  
* 中文截取,支持gb2312,gbk,utf-8,big5  
  
*  
  
* @param string $str 要截取的字串  
  
* @param int $start 截取起始位置  
  
* @param int $length 截取长度  
  
* @param string $charset utf-8|gb2312|gbk|big5 编码  
  
* @param $suffix 是否加尾缀  
  
*/  
   
public function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)   
   
{   
   
   if(function_exists("mb_substr"))   
   
   {   
   
       if(mb_strlen($str, $charset) <= $length) return $str;   
   
       $slice = mb_substr($str, $start, $length, $charset);   
   
   }   
   
   else  
   
   {   
   
       $re[&#39;utf-8&#39;]   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";   
   
       $re[&#39;gb2312&#39;] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";   
   
       $re[&#39;gbk&#39;]          = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";   
   
       $re[&#39;big5&#39;]          = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";   
   
       preg_match_all($re[$charset], $str, $match);   
   
       if(count($match[0]) <= $length) return $str;   
   
       $slice = join("",array_slice($match[0], $start, $length));   
   
   }   
   
   if($suffix) return $slice."…";   
   
   return $slice;   
   
}


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.