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