ホームページ >バックエンド開発 >PHPチュートリアル >PHP で中国語と英語の混合文字列を簡単に実装する_PHP チュートリアル

PHP で中国語と英語の混合文字列を簡単に実装する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:29:19926ブラウズ

まず使用する関数を紹介します:

コードをコピー コードは次のとおりです:

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

tru​​ehttp://www.bkjia.com/PHPjc/777641.html技術記事まず使用する関数を紹介します。 次のようにコードをコピーします。 mb_strwidth($str, $encoding) 文字列の幅を返します $str 計算される文字列 $encoding 使用されるエンコーディング (例:...)
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。