ITコラム

PHP 文字列 長さ

PHP

2019.05.16

PHP【文字列】strlen で文字列の長さを取得

PHP で文字列の長さを取得する場合は strlen 関数を使用しますが、strlen 関数では意図する結果が得られない場合もあります。
今回は PHP で文字列の長さを取得する方法を紹介します。
 
尚、本サイトでは XAMPP( ザンプ )という開発環境を使用しています。
XAMPP のインストール方法や起動方法については以下の記事をご参照下さい。
PHP【 開発環境 】XAMPP インストール
PHP【 開発環境 】XAMPP の使い方

最終更新日:2019年5月16日

目次

1.strlen で文字列の長さを取得
2.mb_strlen で文字数を取得
 

1.strlen で文字列の長さを取得

strlen 関数は、文字列の長さをバイト数で返す関数です。

次のように記述して使用します。

strlen ( 文字列 ) ;

引数に、対象となる文字列を指定します。

strlen のサンプル

strlen 関数を使用して 文字列の長さを取得してみます。

下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)

<?php

  echo strlen("12abc");
  echo "<br>";
  echo strlen("12 abc");
  echo "<br>";
  echo strlen("12あいう");
  echo "<br>";
  echo strlen("12 あいう");

?>

「 echo 」は、データを出力するために使用する PHP の命令です。

「 strlen(“12abc”) 」の出力値が「 5 」なのは想定できますが「 strlen(“12あいう”) 」が「 15 」なのは意外かもしれません。
これは、strlen 関数の戻り値が、文字数ではなく バイト数であることに起因する現象です。

半角英数字や半角スペース等は 1 文字が 1 バイトなので strlen 関数の戻り値を文字数と捉えて問題ありませんが、日本語や全角スペース等が入った文字列の文字数を取得したい場合は、次章で紹介する mb_strlen 関数を使用します。

また、上のサンプルでは strlen 関数の引数に文字列を直接指定していますが、プログラム上では「 strlen($str) 」のように文字列変数を指定することが多いです。

▲目次へ戻る

 

2.mb_strlen で文字数を取得

半角英数字等の文字列に関しては strlen 関数で取得した数値が文字数となりますが、漢字や平仮名等が入った文字列に関しては strlen 関数で文字数を取得することはできません。

そこで、半角英数字以外の文字が入った文字列に関しては、mb_strlen 関数を使用して文字列の長さを取得します。

mb_strlen 関数は、文字列の文字数を返す関数です。

次のように記述して使用します。

mb_strlen ( 文字列 [, エンコーディング ] ) ;

第 1 引数には、対象となる文字列を指定します。

第 2 引数には、文字エンコーディングを指定することができます。
文字エンコーディングを指定しない場合は、PHP の設定ファイル上の文字エンコーディング( PHP5.6.0以降は UTF-8 がデフォルト値 )が適用されます。

mb_strlen のサンプル

mb_strlen 関数を使用して 文字列の文字数を取得してみます。

下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)

<?php

  echo mb_strlen("12abc");
  echo "<br>";
  echo mb_strlen("12 abc");
  echo "<br>";
  echo mb_strlen("12あいう");
  echo "<br>";
  echo mb_strlen("12 あいう");

?>

mb_strlen 関数を使用すると、半角文字でも全角文字でも 文字数を取得することができます。

strlen 関数と同様に、スペースも文字数にカウントされます。

▲目次へ戻る

SHARE

ITコラムのおすすめ記事

最新記事

無料相談する

INTERNOUS,inc. All rights reserved.