ホームページ > バックエンド開発 > PHPチュートリアル > PHP は、わずか 2 行のコードで中国語と英語が混在した文字列インターセプトを簡単に処理できます。

PHP は、わずか 2 行のコードで中国語と英語が混在した文字列インターセプトを簡単に処理できます。

WBOY
リリース: 2016-07-25 09:12:08
オリジナル
1176 人が閲覧しました

中国語と英語の混合カウントとインターセプトに関して、最初に思い浮かぶのは、ASCII、16 進数、通常のマッチング、ループ カウンティングです。

今日は、PHP の mb 拡張機能を共有して、文字列を簡単に処理する方法を説明します。


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

mb_strwidth($str, $encoding) は文字列の幅を返します

$str 計算される文字列

$encoding utf8、gbk などの使用するエンコーディング

mb_strimwidth($str, $start, $width, $tail, $encoding) は文字列を幅でインターセプトします

$str インターセプトされる文字列

$start インターセプトを開始する位置、デフォルトは 0 です

$width インターセプトされる幅

$tail はインターセプトされた文字列の後の文字列に追加されます。一般的に使用されるのは...

$encoding 使用するエンコーディング


以下に例を示します:

  1. /**
  2. * utf8 エンコード形式
  3. * 1 つの漢字は 3 バイトを占有します
  4. * 1 つの漢字が 2 バイトを占有することを望みます、
  5. * 幅の観点から、2 つの英語文字が占める位置は 1 つの中国語文字に相当するため
  6. */
  7. // テスト文字列
  8. $str = 'aaaaahahaaaaahahahaaa';
  9. echo strlen($str) // 25 バイトを出力する場合のみ strlen を使用します
  10. // エンコーディングを指定する必要があります。指定しない場合、PHP の内部コード mb_internal_encoding() が内部コードの表示に使用されます
  11. // mb_strwidth を使用して幅 20 の文字列を出力し、utf8 エンコーディングを使用します
  12. echo mb_strwidth($ str, 'utf8 ');
  13. // 幅が 10 より大きい場合のみインターセプトします
  14. if(mb_strwidth($str, 'utf8')>10){
  15. // 0 からインターセプトするように設定し、10 回追加します ..., utf8 エンコーディングを使用します
  16. // 追加された... も長さに計算されることに注意してください
  17. $str = mb_strimwidth($str, 0, 10, '...', 'utf8');
  18. }
  19. //最後に aaaa を出力します... a が 4 つで 1 が 4 つとして数えられ、2 つで 3 点として数えられ、3 つで 4+2+3=9 として数えられます
  20. // とても単純ではないですかという人もいますが、なぜですか? 10ではなく9ですか?
  21. // 「ああ」の後に「ああ」が続くため、中国語のカウントは 2、9+2=11 が設定を超えているため、1 を削除すると 9 になります
  22. echo $str;
コードをコピー


その他の機能を以下にいくつか紹介しましょう:

mb_strlen($str, $encoding) は文字列の長さを返します

$str 計算される文字列

$encoding 使用されるエンコーディング

mb_substr($str, $start, $length, $encoding) は文字列をインターセプトします

$str インターセプトされる文字列

$start どこからインターセプトを開始するか

$length インターセプトする長さ

$encoding 使用されるエンコーディング

実際、これら 2 つの関数は strlen() と substr() に非常に似ています。唯一の違いは、エンコーディングを設定できることです。


以下の例:

    /**
  1. * utf8 エンコード形式
  2. * 1 中国語は 3 バイトを占有します
  3. */
  4. $str = 'aa12ahaa';
  5. echo strlen($str); // 直接出力の長さは 9
  6. // 出力の長さは 7 ですが、なぜですか7ですか?
  7. // ここでエンコードを設定すると、中国語でも英語でも、それぞれの長さは 1 になることに注意してください
  8. // a a 1 2 ah a a
  9. // 1+1+1+1+1+1+1 = 7
  10. // ちょうど 7 文字ですか?
  11. echo mb_strlen($str, 'utf8');
  12. // mb_substr にも同じことが当てはまります
  13. // 今必要なのは 5 文字だけです
  14. echo mb_substr($str, 0, 5) , 'utf8') // aa12を出力
コードをコピー


実際、mb 拡張子には便利な関数がたくさんあるので、ここではすべてをリストすることはしません。

興味のある友達は公式マニュアルをチェックしてください

http://www.php.net/manual/zh/ref.mbstring.php

さて、今日はここまでです。


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート