まず使用する関数を紹介します:
コードをコピー コードは次のとおりです:
mb_strwidth($str, $encoding) 文字列の幅を返します
$str 計算される文字列
$encoding 使用するエンコーディング (utf8 など) 、gbk
コードをコピーします コードは次のとおりです:
mb_strimwidth($str, $start, $width, $tail, $encoding) 幅に従って文字列をインターセプトします
$str インターセプトされる文字列
$start どの位置からインターセプトを開始するか、デフォルトは 0 です
$width インターセプトされる幅
$tail はインターセプトされた文字列の後の文字列に追加されます。一般的に使用されるのは...
$encoding 使用されるエンコーディング
以下に例を示します:
コードをコピーします コードは次のとおりです:
/**
* utf8 エンコード形式
* 1 つの中国語文字は 3 バイトを占有します
* 1 つの中国語文字が 2 バイトを占有することを望みます、
* 幅の観点から、2 つの英語文字が占める位置は 1 つの中国語文字と同等であるため
*/
// テスト文字列
$str = 'aaaaahahaaaaaaahahaaa';
echo strlen($str) // 25 バイトを出力する場合のみ strlen を使用します
;
// エンコーディングを指定する必要があります。指定しない場合は、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 を出力します... a が 4 つで 1 が 4 つとして数えられ、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() に非常に似ていますが、唯一の違いはエンコーディングを設定できることです。
以下の例:
コードをコピー コードは次のとおりです:
/**
* utf8エンコード形式
* 漢字1文字は3バイトを占有します
*/
$str = 'aa12ahaa';
echo strlen($str); // 直接出力します。 9の長さ
//出力の長さは 7 ですが、なぜ 7 なのでしょうか?
// ここでエンコードを設定すると、中国語でも英語でも、それぞれの長さは 1 になることに注意してください
// a a 1 2 ah 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.bkjia.com/PHPjc/777641.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/777641.html技術記事まず使用する関数を紹介します。 次のようにコードをコピーします。 mb_strwidth($str, $encoding) 文字列の幅を返します $str 計算される文字列 $encoding 使用されるエンコーディング (例:...)