ホームページ  >  記事  >  バックエンド開発  >  [PHP] 中国語の文字列の長さを取得する簡単で素晴らしい方法_PHP チュートリアル

[PHP] 中国語の文字列の長さを取得する簡単で素晴らしい方法_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-14 10:07:02667ブラウズ

今夜フレームワークのフォーム検証クラスを書いていたとき、特定の文字列の長さが指定された範囲内にあるかどうかを判断する必要があり、当然、PHP の strlen 関数を思い出しました。
$str = 'Hello world!';
echo strlen($str); // 出力 12
ただし、PHP に付属する関数のうち、strlen と mb_strlen は両方とも、文字列が占めるバイト数を計算することで長さを計算します。エンコード条件が異なると、中国語が占めるバイト数も異なります。 GBK/GB2312 では中国語の文字は 2 バイトを占めますが、UTF-8 では中国語の文字は 3 バイトを占めます。
$str = 'こんにちは、世界! ';
echo strlen($str); // GBK または GB2312 では出力 12、UTF-8 では出力 18
文字列の長さを判断するときは、UTF-8 での次の PHP コードのように、文字列が占めるバイト数ではなく、文字数を判断する必要があることがよくあります。 $name = '張庚昌';
$len = strlen($name);
// UTF-8 では 3 つの漢字が 9 バイトを占めるため、FALSE を出力します
if($len >= 3 && $len エコー「TRUE」;
}その他{
エコー「FALSE」;
}
それでは、中国語の文字列の長さを取得する便利で実用的な方法はあるのでしょうか?通常のルールを使用して中国語の文字数を計算し、GBK/GB2312 エンコードで 2 で割って、UTF-8 エンコードで 3 で割って、最後に中国語以外の文字列の長さを加算することもできますが、これは面倒すぎます。WordPressには、より美しいコード部分があります。次のように参照してください:
$str = 'こんにちは、世界! ';
preg_match_all('/./us', $str, $match);
echo count($match[0]); // 出力 9
このアイデアは、正規表現を使用して文字列を単一の文字に分割し、count を直接使用して一致する文字の数を計算することであり、これが目的の結果です。


http://www.bkjia.com/PHPjc/477890.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477890.html技術記事今夜フレームワークのフォーム検証クラスを作成していたとき、特定の文字列の長さが指定された範囲内にあるかどうかを判断する必要があったので、当然、PHP の strlen 関数を思い出しました。 $str = Hello world!; エコー str...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。