PHP で中国語の文字列の長さを計算し、中国語の文字列をインターセプトする

巴扎黑
リリース: 2016-11-11 13:39:35
オリジナル
1144 人が閲覧しました

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;   
   
}
ログイン後にコピー


関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!