中国語文字列長の問題:strlenとmb_strlen

921 ワード

strlen(' ')     // 15

PHPに内蔵された文字列長関数strlen()は、中国語文字列を正しく処理できません.文字列が占めるバイト数だけが得られます.GB 2312の中国語符号化ではstrlenが得た値は漢字個数の2倍であり、UTF-8符号化の中国語では3倍の差がある(UTF-8符号化では漢字1文字が3バイトを占める).
mb_strlen(' ')     // 5

説明
mixed mb_strlen ( string str[,string encoding = mb_internal_encoding() ] )
stringの長さを取得します.
パラメータ
strは長さの文字列をチェックします.encoding encodingパラメータは文字符号化です.省略する場合は、内部文字符号化を使用します.
戻り値
encoding符号化された文字列strに含まれる文字数を返します.マルチバイトの文字は1としてカウントされます.指定されたencodingが無効な場合はFALSEに戻ります.
使用前にmbstring拡張をオンにする必要があります:php.iniにphp_がロードされましたmbstring.dllは、「extension=php_mbstring.dll」という行が存在し、コメントされていないことを確認します.そうしないと、関数が定義されていないという問題が発生します.