>  기사  >  백엔드 개발  >  (실용) PHP에서 중국어 문자열의 길이를 계산하고 중국어 문자열을 가로채는 함수 코드

(실용) PHP에서 중국어 문자열의 길이를 계산하고 중국어 문자열을 가로채는 함수 코드

黄舟
黄舟원래의
2017-02-06 15:14:561495검색

PHP에는 중국어의 길이를 가로채서 길이를 계산할 수 있는 특별한 mb_substr 및 mb_strlen 함수가 있다는 것을 우리 모두 알고 있습니다. 그러나 이러한 함수는 PHP의 핵심 기능이 아니기 때문에 활성화되지 않을 수 있습니다. 물론, 자체 서버를 사용하는 경우 php.ini에서만 활성화하면 됩니다. 가상 호스트가 사용되고 서버가 이 기능을 활성화하지 않으면 우리는 우리 자신에게 적합한 몇 가지 기능을 작성해야 합니다.

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

header('Content-type:text/html;charset=utf-8'); 
/** 
* 可以统计中文字符串长度的函数 
* @param $str 要计算长度的字符串 
* @param $type 计算长度类型,0(默认)表示一个中文算一个字符,1表示一个中文算两个字符 
* 
*/ 
function abslength($str) 
{ 
if(empty($str)){ 
return 0; 
} 
if(function_exists('mb_strlen')){ 
return mb_strlen($str,'utf-8'); 
} 
else { 
preg_match_all("/./u", $str, $ar); 
return count($ar[0]); 
} 
} 
$str = '我们都是中国人啊,ye!'; 
$len = abslength($str); 
var_dump($len); //return 12 
$len = abslength($str,'1'); 
echo &#39;<br />&#39;.$len; //return 22 
/* 
utf-8编码下截取中文字符串,参数可以参照substr函数 
@param $str 要进行截取的字符串 
@param $start 要进行截取的开始位置,负数为反向截取 
@param $end 要进行截取的长度 
*/ 
function utf8_substr($str,$start=0) { 
if(empty($str)){ 
return false; 
} 
if (function_exists(&#39;mb_substr&#39;)){ 
if(func_num_args() >= 3) { 
$end = func_get_arg(2); 
return mb_substr($str,$start,$end,&#39;utf-8&#39;); 
} 
else { 
mb_internal_encoding("UTF-8"); 
return mb_substr($str,$start); 
} 
} 
else { 
$null = ""; 
preg_match_all("/./u", $str, $ar); 
if(func_num_args() >= 3) { 
$end = func_get_arg(2); 
return join($null, array_slice($ar[0],$start,$end)); 
} 
else { 
return join($null, array_slice($ar[0],$start)); 
} 
} 
} 
$str2 = &#39;wo要截取zhongwen&#39;; 
echo &#39;<br />&#39;; 
echo utf8_substr($str2,0,-4); //return wo要截取zhon

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

<?php
/* 
* 中文截取,支持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; 
}

위는 중국어 문자열의 길이를 계산하고 중국어 문자열을 가로채기 위한 함수 코드의 (실용적인) 내용입니다 in PHP , 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)를 주목하세요!


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