ホームページ  >  記事  >  バックエンド開発  >  PHPで中国語の文字列の長さを取得する方法

PHPで中国語の文字列の長さを取得する方法

WBOY
WBOYオリジナル
2016-07-25 09:07:141732ブラウズ
  1. $str = 'Hello world!';
  2. echo strlen($str); // 出力 12
  3. ?>
コードをコピー

ただし、PHP には付属していますこの関数では、strlen と mb_strlen はどちらも、文字列が占めるバイト数を計算することで長さを計算します。エンコード条件が異なると、中国語が占めるバイト数も異なります。 GBK/GB2312 では中国語の文字は 2 バイトを占めますが、UTF-8 では中国語の文字は 3 バイトを占めます。

  1. $str = 'Hello world! ';
  2. echo strlen($str); // GBK または GB2312 では出力 12、UTF-8 では出力 18
  3. ?>
コードをコピー

string これは文字数であり、文字列が占めるバイト数ではありません。たとえば、UTF-8 での次の PHP コードのようになります。

  1. $name = 'Zhang Gengchang';
  2. $len = strlen($name);
  3. // UTF-8 では 3 つの漢字が 9 バイトを占有するため、FALSE を出力します
  4. if($ len >= 3 && $len <= 8){
  5. echo 'TRUE';
  6. }else{
  7. echo 'FALSE';
  8. }
  9. ?>
コードをコピー

それで、便利なものがありますまた、漢字を含む文字列の長さを取得する実用的な方法はありますか?通常のルールを使用して中国語の文字数を計算し、GBK/GB2312 エンコードで 2 で割って、UTF-8 エンコードで 3 で割って、最後に中国語以外の文字列の長さを加算することもできますが、これは面倒すぎます。WordPressには、次のようなより美しいコードがあります。

  1. $str = 'こんにちは、世界! ';
  2. preg_match_all('/./us', $str, $match);
  3. echo count($match[0]); // 出力 9
  4. ?>
コードをコピー

正規表現を使用するこの数式は文字列を単一の文字に分割し、count を直接使用して一致する文字の数を計算することで、必要な結果が得られます。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。