Heim  >  Artikel  >  Backend-Entwicklung  >  Berechnen Sie die Länge chinesischer Zeichenfolgen und fangen Sie chinesische Zeichenfolgen in PHP ab

Berechnen Sie die Länge chinesischer Zeichenfolgen und fangen Sie chinesische Zeichenfolgen in PHP ab

巴扎黑
巴扎黑Original
2016-11-11 13:39:351177Durchsuche

Bei der PHP-Entwicklung müssen wir uns aufgrund der Sprachumgebungsprobleme meines Landes häufig mit Chinesisch befassen. Wir alle wissen, dass es in PHP spezielle Funktionen mb_substr und mb_strlen gibt, die die Länge von Chinesisch abfangen und berechnen können. Da diese Funktionen jedoch keine Kernfunktionen von PHP sind, können sie möglicherweise nicht aktiviert werden. Wenn Sie Ihren eigenen Server verwenden, müssen Sie diesen natürlich nur in der php.ini aktivieren. Wenn ein virtueller Host verwendet wird und der Server diese Funktion nicht aktiviert, müssen wir einige Funktionen schreiben, die für unsere nationalen Bedingungen geeignet sind.

Die folgenden Funktionen sind recht einfach zu bedienen. Sie müssen jedoch wissen, dass es in einer UTF-8-Umgebung verwendet werden muss.

Unterstützt die chinesische Abfangmethode 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;   
   
}


Stellungnahme:
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