phpは簡単に中国語と英語の混成文字列の切り取りを完成して、2行のコードだけが必要です!


中国語と英語の混在カウント、切り取りといえば、まずascii、16進数、正則マッチング、サイクルカウントを思い浮かべます.
今日はphpのmb拡張を共有して、文字列を簡単に処理する方法を教えてあげます.
 
まず、使用する関数について説明します.
mb_strwidth($str,$encoding)は文字列の幅を返します.
$str計算する文字列
$encoding utf 8、gbkなどの使用する符号化
mb_strimwidth($str,$start,$width,$tail,$encoding)幅で文字列を切り取る
$str切り取る文字列
$startはどの位置から切り取りますか?デフォルトは0です.
$width切り取る幅
$tailは切り取り文字列の後ろの文字列に追加され、よく使われるのは...
$encodingで使用するエンコーディング
 
次の例を示します.
<?php

/**

 * utf8     

 * 1     3   

 *       1     2   ,

 *        2             1   

 */



//      

$str = 'aaaa  aaaa   aaa';

echo strlen($str); //   strlen   25   



//       ,     php    mb_internal_encoding()      

//   mb_strwidth         20  utf8  

echo mb_strwidth($str, 'utf8'); 



//       10   

if(mb_strwidth($str, 'utf8')>10){

    //      0    , 10   ...,  utf8  

    //      ...          

    $str = mb_strimwidth($str, 0, 10, '...', 'utf8');

}



//      aaaa ... 4 a 4  1   2  3   3  4+2+3=9

//        ,         9   10  ?

//     “ ”     “ ”,   2 ,9+2=11      ,    1   9 

echo $str;

 
 
次に、他の関数を紹介しましょう.
mb_strlen($str,$encoding)は文字列の長さを返します.
$str計算する文字列
$encodingで使用される符号化
mb_substr($str,$start,$length,$encoding)切り取り文字列
$str切り取る文字列
$startはどこから切り取りますか?
$length切り取り長さ
$encodingで使用される符号化
実はこの2つの関数はstrlen()やsubstr()に似ていて、唯一の違いは符号化を設定できることです.
 
下のインスタンス:
<?php

/**

 * utf8     

 * 1     3   

 */

$str = 'aa12 aa';

echo strlen($str); //        9



//      7,    7 ?

//           ,               1

// a a 1 2   a a 

// 1+1+1+1+1+1+1 = 7

//      7    

echo mb_strlen($str, 'utf8');



//   mb_substr     

//       5   

echo mb_substr($str, 0, 5, 'utf8'); //    aa12 

 
 
実はmb拡張には使いやすい関数がたくさんありますが、ここでは一つ一つ挙げません.
興味のある方は公式マニュアルをご覧いただけます
http://www.php.net/manual/zh/ref.mbstring.php
さあ、今日はここまで紹介します.