PHPの文字列の長さを取得するサンプルです。
(確認環境:PHP 7)
目次
サンプル | mb_strlenとは |
ファイルがUTF-8で保存されている場合 | |
ファイルがShift-JISで保存されている場合 | |
内部文字エンコーディングの種類を確認 | |
strlenとは |
mb_strlenとは
mixed mb_strlen ( string 文字列 [, string エンコーディング] ) |
- 文字列の長さを取得します。
- 日本語のひらがなや漢字などのマルチバイト文字に対応しています。
- エンコーディングを省略した場合は内部文字エンコーディングを使用します。
→内部文字エンコーディングは、mb_internal_encoding関数で確認できます。
ファイルがUTF-8で保存されている場合
ファイルはUTF-8で保存されていて、内部エンコーディングがUTF-8の場合です。
<?php
echo mb_internal_encoding(); //UTF-8
$test1 = "あいう";
$test2 = "あいうえおabc";
print mb_strlen($test1); //3
print mb_strlen($test2,"UTF-8"); //8
3行目は、mb_internal_encoding関数で、現在の内部文字エンコーディングを表示しています。
8,9行目は、mb_strlen関数で文字列の長さを取得しています。
ファイルがShift-JISで保存されている場合
ファイルはShift-JISで保存されていて、内部エンコーディングがUTF-8の場合です。
mb_strlen関数の2つめの引数をSJISに変更します。
<?php
echo mb_internal_encoding(); //UTF-8
$test1 = "あいう";
$test2 = "あいうえおabc";
print mb_strlen($test1,"SJIS");//3
print mb_strlen($test2,"SJIS");//8
以下は、PHPマニュアルのmb_strlen関数のリンクです。
http://php.net/manual/ja/function.mb-strlen.php
内部文字エンコーディングの種類を確認
mb_list_encodings関数は、サポートされている内部文字エンコーディングの種類を返します。
<?php
foreach (mb_list_encodings() as $value){
echo $value."<br />\n"; //86種類表示
}
テスト環境では86種類表示されました。
以下は、PHPマニュアルのmb_list_encodings関数のリンクです。
http://php.net/manual/ja/function.mb-list-encodings.php
strlenとは
int strlen (string 文字列) |
- 文字列の長さを取得します。
- 日本語のひらがなや漢字などのマルチバイト文字に対応していません。
→mb_strlen関数を使用して下さい。
<?php
$test1 = "abc";
$test2 = "abcd";
print strlen($test1);//3
print strlen($test2);//4
以下は、PHPマニュアルのstrlen関数のリンクです。
http://php.net/manual/ja/function.strlen.php
関連の記事
PHP 英字の大文字と小文字を変換(strtolower/strtoupper)
PHP mb_substr 文字列を切り出すサンプル