PHPの文字列操作を覚えよう!substr関数とmb_substr関数について解説します。

プログラミング 公開日:
ブックマーク
PHPの文字列操作を覚えよう!substr関数とmb_substr関数について解説します。
PHPでは文字列を切り出す方法がいくつかありますが、本記事ではsubstr関数とmb_substr関数について解説します。この2つの関数の違いを理解し、適切に使いこなすことで、より柔軟で高度な文字列処理が可能になります。

はじめに

実装していると、下記のような文字列を切り出して使用したいケースが発生します。

  • URLから特定のパラメータを抽出する
  • ユーザーからの入力から特定のキーワードを検出する
  • ファイル名や拡張子を取得する

PHPには、このようなケースで利用できる関数がいくつか用意されていますが、本記事ではsubstr関数とmb_substr関数について解説します。

この2つの関数の違いを理解して、上記のようなケースに対応できるようにしていきましょう。

substr関数

基本的な使い方

substr関数の基本構文は以下の通りです。

substr(string $対象の文字列, int $開始位置(0から始まる), int $文字数(省略時は文字列の最後まで) = null): string

では実際に具体例を見てみましょう。

こちらのコードは、郵便番号の前3文字 + ハイフン以降の文字列を取得する目的で書かれたコードです。

$postcode = "285-0810";

$result = substr($postcode, 4); 
echo $result;

「285-0810」という文字列に対して、先頭から4文字目を開始位置にセットし、以降の文字列を取得します。

よって出力結果は、

0810

となります。

次に第3引数の文字数を指定してみましょう。

こちらのコードは、郵便番号の前3文字を取得する目的で書かれたコードです。
開始位置に0、文字数に3が指定されています。

$postcode = "285-0810";

$result = substr($postcode, 0, 3); 
echo $result;

出力結果は、

285

となります。

負の値を指定する

負の値を指定することもでき、負の値を指定した場合は、文字列の後ろから数えます。

$postcode = "285-0810";

$result = substr($postcode, -3); 
echo $result;

後ろから3文字目を開始位置とするので出力結果は、

810

となります。

注意点

substr関数はシンプルで扱いやすい反面、マルチバイト文字(日本語など2バイト以上の文字)には対応していません。

マルチバイト文字が含まれる可能性がある場合は、mb_substr関数を使うようにしましょう。

mb_substr関数

mb_substr関数は、substr関数のマルチバイト文字対応版です。

mb_substr関数の基本構文は以下の通りです。

mb_substr(string $対象の文字列, int $開始位置(0から始まる), int $文字数(省略時は文字列の最後まで) = null, string $文字エンコーディング(省略時可能) = null): string

mb_substr関数は、substr関数とほぼ同じ使い方ですが、$encodingパラメータで文字エンコーディングを指定できる点が異なります。

$string = "あいうえお";
$result = mb_substr($string, 1, 3, "UTF-8");

echo $result;

上記のように第4引数に文字エンコーディング(UTF-8)を指定することで、文字化けせずに日本語の文字列の一部を取得することができました。

一方で、substr関数に比べてやや処理速度が遅くなる場合があるので、うまく使い分けするように心がけましょう。

終わりに

いかがでしたでしょうか?
今回はPHPで文字列を切り出す方法として、substr関数とmb_substr関数の2つを紹介しました。

改めて整理すると、

  • substr関数:シンプルで高速ですが、マルチバイト文字に対応していません。
  • mb_substr関数:マルチバイト文字に対応していますが、substr関数に比べて処理速度が遅くなる場合があります。

という特徴があります。

それぞれの関数の特徴を理解し、状況に応じて使い分けていきましょう。

TECH PLAYでは、ITに関わる様々なイベント・勉強会・講演会・交流会・カンファレンス・セミナーなどの情報を集約し掲載しています。

テクノロジーと共に成長しよう、
活躍しよう。

TECH PLAYに登録すると、
スキルアップやキャリアアップのための
情報がもっと簡単に見つけられます。

面白そうなイベントを見つけたら
積極的に参加してみましょう。
ログインはこちら

タグからイベントをさがす