2015年11月3日

PHP 文字列の長さ(文字数)を取得する

«
»

Pocket

今回は「文字列の長さ(=文字数)を取得する」方法を紹介します。
 
TwitterなどのWEBサービスでは入力できる文字数に制限がありますが、
ユーザーが入力した文字の文字数がわからなければ、チェックができません
 
まずはサンプルプログラムをみてみましょう。


<?php

$moji = "おはよう";

echo mb_strlen($moji); //mb_strlen("おはよう") でも同じ


実行結果

PHP 文字数 mb_strlen

解説

PHP 文字列 長さ mb_strlen
 

mb_strlenはPHP側であらかじめ定義された文字列に関する関数(=function)で、
requireなどをしなくても使えます
 
mbはマルチバイトを意味しています。マルチバイトについては別途書きたいと思いますが、
ここでは、日本語を扱う(英語だけじゃなくて)場合はマルチバイトを扱ってるんだ、
と思って下さい。
 
strlenはString(=文字列)のStrと、Length(=長さ)のLenの合成です。
文字列の長さ=文字数ということになります。
 
mb_strlen(文字数を知りたい文字列);
という形式で利用し、返り値(かえりち)として文字数が返ってきます。
 
「おはよう」は4文字なので、4と画面に表示されます。

mb_strlenとstrlenの違い

mb_strlenはマルチバイトを扱うという関数ですが、単純なstrlenという関数もあります
サンプルプログラムをみてみましょう。
 


<?php

$moji = "おはよう";

echo strlen($moji);


実行結果

PHP strlen

解説

結果は12となりました。どういうことかというと、
strlenは文字数ではなく、バイト数を返します
 
日本語の1文字というのは3バイトというバイト数を使用します。
(バイトについてはまたどこかで書きたいと思います)
 
従って、4文字✕3バイトで12を表示しているのです。
ただし、「abcd」の文字数を知りたいのでであれば、アルファベットは
1文字につき1バイト
なので4と表示されます。
 
なので、基本的にはmb_strlenを利用することをオススメします。

まとめ

・mb_strlen(文字数を知りたい文字列)で文字数を受け取れる
・mb_strlenはPHPで用意された文字列関数である
・strlenは文字数ではなく、バイト数を返す

【関連する記事】