- 更新日: 2020年10月08日
- 公開日: 2017年08月18日
phpで文字列を切り出す方法【substr/mb_substr】
phpでは文字列の中から指定した文字列を切り出す(または抽出・抜き出し)ことができます。
また、その方法はいくつか用意されており、今回はその方法をサンプルソースを交え、わかりやすく解説していきます。
substr・mb_substr
phpで文字列を切り出す(または抽出・抜き出し)際は、よくsubstr()関数やmb_substr()関数を使用します。両方とも文字列の一部を切り出すという関数になります。 substr()関数の読み方としては、substring(サブストリング)と呼ばれるケースが多いと感じます。
substr
基本構文は下記になります
substr( 対象文字列, 開始位置 [, 文字数]);
対象文字列の開始位置から文字数分の文字列を抽出します。
echo substr('codecamp', 1);
結果
"odecamp"
上記のようにsubstr()関数の第2引数に1と指定しているので、それ以降の文字列が結果として表示されます。ここで注意するべき箇所が、引数には1と指定しているのに1文字目(最初の文字)が無視されている点です。配列の添字(インデックス)と同様に、ここでは1文字目(最初の文字)は0を指すためです。よって、文字列の先頭から切り出しを行いたい場合は、下記のように指定します。
echo substr('codecamp', 0);
結果
"codecamp"
また、引数には負の数を指定することも可能です。
echo substr('codecamp', -4);
この場合は、下記のように文字列の末尾から数えた文字数分の切り出しを行うことができます。
"camp"
注意点として、substr()関数では、マルチバイト文字列(ひらがなや漢字といった日本語の文字列)を切り出す(抽出・または抜き出し)ことはできません。
mb_substr
基本構文は下記になります
mb_substr( 対象文字列, 開始位置 [ ,文字数 [ ,エンコーディング]] );
mb_substr()関数は、基本的にはsubstr()関数と使用方法は同じですが、マルチバイト文字列(ひらがなや漢字といった日本語の文字列)を切り出す(抽出・または抜き出し)ことができます。
echo mb_substr('コードキャンプ', 3);
結果
"キャンプ"
同様に、引数に負の数を指定したり、複数の値を引数に取ることも可能です。
echo mb_substr('コードキャンプ', -4);
echo mb_substr('コードキャンプ', 2, 4);
結果
"キャンプ"
"ドキャン"
その他文字列を切り出す方法
wordwrap
wordwrapは文字列の切り出しとは少し異なりますが、substr()関数と同じような使用方法で文字列中に文字列を挿入し、文字列を分割することができます。
wordwrap("対象の文字列", "分割する文字数", "挿入する文字列", true/false);
例文
echo wordwrap("となりの田中さんのためのテクノロジーメディア", 9, '<br />');
結果
"となりの田中さんの<br />ためのテクノロジーメディア"
htmlで改行を行う際に便利ですね!
split
split()関数を使用することで、対象の文字列に対して、指定された文字を使用し、文字分割することができます。構文は下記です。
split("分割指定文字(区切り文字)", "対象の文字列");
戻り値は配列として取得されることに注意しましょう。
$arr = split("、", "犬、猫、猿、鳥、馬");
var_dump($arr);
echo $arr[1];
結果
[
"犬",
"猫",
"猿",
"鳥",
"馬"
]
"猫"
文字分割され、任意の文字列が取得できますね。
CodeCamp提供のWebマスター(PHP)コース
当メディアを運営しているCodeCampではWebマスターコース(PHP)を現役エンジニアのマンツーマンレッスンという形で提供しています。このコースの特徴は
- バックからフロントまでエンジニアとしての基礎スキルを着実に獲得できる
- プログラミング未経験から転職・フリーランスへ挑戦
- 実際にWebサービスをを開発するのでポートフォリオとしても使用できる
詳細はこちらから確認してみてください!▶︎https://codecamp.jp/courses/master_web
\Webサイト担当者としてのスキルが身に付く/
まとめ
いかがだったでしょうか、phpで文字列を切り出す(抽出・もしくは抜き出し)する方法を解説しました。文字列に関する操作は覚えておくと重宝するので、ぜひこの機会に慣れていきましょう。
- この記事を書いた人
- ベンジャミン吉澤