php文字列長の解釈
1117 ワード
phpでは、関数strlen()は文字列の長さを返し、実際には文字列が占めるバイト長を計算し、異なる符号化では文字列が占めるバイト長が異なる.
一般的な文字コードのバイト数をいくつか挙げます.
ASCIIコード:1つのASCIIコードは1バイトです
UTF 8符号化:1つの英字文字は1バイトを占有し、1つの中国語(繁体字を含む)は3バイトを占有する
Unicodeコード:1つの英語文字が2バイト、1つの中国語(繁体字を含む)が2バイトを占有
GBKとGBK 2312コード:中国語(繁体字を含む)で2バイト使用
シンボル:英語の句読点が1バイト、中国語の句読点が2バイト
phpで文字列の長さを計算するといくつかの問題が発生し、strlen()関数は文字列の実際の長さを正確に返すことができず、文字列に中国語、全角記号などが含まれている場合、
例えば:(現在のテキストはutf 8符号化)
mb_を使用できますstrlen()関数は、文字列の文字長とバイト長を調整し、実際に文字長を計算します.mb_のためstrlen()はphp内蔵関数ではありません.
php拡張機能モジュールにphp_を導入mbstring.dll、使用フォーマット:int mb_strlen(string string_input, string encode);
例:
補足:データ記憶単位についての簡単な説明コンピュータデータ記憶基本単位はバイト(Byte、略称B)、データ伝送の基本単位は「ビット」(bit、略称b)であり、1バイトは8ビットバイナリに等しく、1ビットは1つの0または1を表す.
1バイトの値範囲は0~255(2^8)です.
1B=8b
1KB=1024B=2^10B
1MB=1024KB=2^20B
1GB=1024MB=2^30B
1TB=1024GB=2^40B
1PB=1024TB=2^50B
一般的な文字コードのバイト数をいくつか挙げます.
ASCIIコード:1つのASCIIコードは1バイトです
UTF 8符号化:1つの英字文字は1バイトを占有し、1つの中国語(繁体字を含む)は3バイトを占有する
Unicodeコード:1つの英語文字が2バイト、1つの中国語(繁体字を含む)が2バイトを占有
GBKとGBK 2312コード:中国語(繁体字を含む)で2バイト使用
シンボル:英語の句読点が1バイト、中国語の句読点が2バイト
phpで文字列の長さを計算するといくつかの問題が発生し、strlen()関数は文字列の実際の長さを正確に返すことができず、文字列に中国語、全角記号などが含まれている場合、
例えば:(現在のテキストはutf 8符号化)
は6を出力し、関数は実際に文字列の文字長ではなく、文字列が占めるバイト長を返します.いくつかのシーンでは、これは私たちのニーズに合っていません.この問題を解決するために、mb_を使用できますstrlen()関数は、文字列の文字長とバイト長を調整し、実際に文字長を計算します.mb_のためstrlen()はphp内蔵関数ではありません.
php拡張機能モジュールにphp_を導入mbstring.dll、使用フォーマット:int mb_strlen(string string_input, string encode);
例:
echo mb_strlen(' ','utf8');//3
補足:データ記憶単位についての簡単な説明コンピュータデータ記憶基本単位はバイト(Byte、略称B)、データ伝送の基本単位は「ビット」(bit、略称b)であり、1バイトは8ビットバイナリに等しく、1ビットは1つの0または1を表す.
1バイトの値範囲は0~255(2^8)です.
1B=8b
1KB=1024B=2^10B
1MB=1024KB=2^20B
1GB=1024MB=2^30B
1TB=1024GB=2^40B
1PB=1024TB=2^50B