今日からPHP学び始めたので初歩的な内容ですがまとめたいと思います。
strlen関数とは
これはrubyでいうところのstring#lengthメソッドと同じです。
構文はこうです。
strlen ( string $string ) : int
引数の( string $string )
には文字列が入り: int
は返り値となってます。
例えばこうです。
strlen('abc') => 3
ただ日本語の場合は違う返り値になります。
例えば、、、
$text = 'あいうえお'
strlen($text) => 15
なぜ。。。
原因としては日本語のマルチバイトはsjis, utf-8だからです。(現在はほとんどがutf-8みたいです。)
###マルチバイトとは
1バイトで表現できない(2バイト以上で表現する)データのことみたいです。。。
バイトってなんだ。。
###バイトとは
調べたところ、バイトとは、情報量の単位で、8ビットと等しい情報量のことを指すようです。
ビットってなんだ...
###ビットとは
パソコンの内部でデータを扱う最小単位。
文字や数字などのデータは2進数で扱おり2進数の1桁をビットと呼び、これがデータを扱うときの最小単位になります。
2進数とは0か1で数を表すことを指しますね。
これらをまとめると1バイト(8ビット)は8ビットでは00000000から11111111までの256通りの数を扱えることを指します。
つまり日本語の文字はパターンが漢字もあるし256通りで表現できないということになり、1バイト以上になることがわかります。
そんな1バイトで表現できない(=2バイト以上で表現する)文字を「マルチバイト文字」と呼んだりします。
話がだいぶ逸れましたが
$text = 'あいうえお'
strlen($text) => 15
こうなったのはひらがなの文字列は3バイトだからということでしょう。
もし日本語の文字列の正確な数を取得したい場合はマルチバイトに対応しているマルチバイト文字列関数を使いましょう。
$text = 'あいうえお'
mb_strlen($text) => 5