PHPで文字列を切り出す方法について書いています。
PHPで文字列を切り出すには、下記の関数を使うことができます。
・mb_substr関数
mb_substr関数はマルチバイト対応関数なので、日本語を切る場合などに使います。
サンプルコードはPHPバージョン8.1.4で、検証しています。
substr関数で切り出す
substr関数で文字列を切り出す方法です。
先頭から文字を見て、切り出す方法と、末尾から文字列を見て切り出すことができます。
公式のドキュメントはこちらです。
先頭から切り出す
先頭から文字列を切り出す場合には、substr関数に0以上の正数を渡します。
例えば、下記のように使います。
<?php
$text = "hello, world";
echo substr($text, 7); // world
echo substr($text, 0, 5); // hello
$text変数に切り出す文字列の「hello, world」を代入しました。
次にsubstr関数を使って、文字列を切り出しています。
第1引数に切り出す対象の文字列「$text」を入れて、第2引数に切り出す位置「7」を入れています。
こうすると、文字列の先頭(0番目)から数えて、7番目の「w」以降が切り取られて返ってきます。
結果「world」が出力されます。
最後にsubstr関数の第1引数に「0」を渡して、第2引数に「5」を渡しています。
こうすると第1引数の文字位置から、第2引数で渡した数で文字を返します。
結果、0番目から5文字返します。そのため出力結果は「hello」となります。
日本語など、マルチバイト文字をsubstr関数で切ろうとすると、文字化けします。
日本語の場合にはmb_substr関数を使いましょう。
末尾から切り出す
末尾から文字列を切り出す場合には、substr関数に-1以下の負数を渡します。
例えば、下記のように使用して、末尾から文字を切り取ります。
$text = "This is a pen";
echo substr($text, -3); // pen
echo substr($text, -8, 4); // is a
$text変数に切り出す文字列の「This is a pen」を代入しました。
次に、文字列を末尾から切り出しています。
substr関数の第1引数に切り取る文字列、第2引数に「-3」を指定しました。
負数を渡すことで、末尾から数えることが可能です。
末尾から数えて3番目の「p」から文字列の最後までが返ってきて、出力結果は「pen」になります。
次はsubstr関数に、引数を3つ渡しました。
第1引数に切り取る文字列、第2引数に「-8」、第3引数に「4」です。
こうすると、切り取り文字列の末尾から8番目の箇所から、4文字切り取ります。
そのため、出力結果は「is a」になります。
substr関数のまとめ
substr関数についてのまとめです。
引数
第1引数と第2引数を渡した場合は、第1引数の文字列を第2引数の位置から末尾まで切り取りました。
substr("切り取る文字列", "切り取り開始位置");
第1引数と第2引数と第3引数を渡した場合です。
この時には、第1引数の文字列を、第2引数の文字位置から第3引数で指定した個数で切り取りました。
substr("切り取る文字列", "切り取り開始位置", "切り取る個数");
戻り値
切り取った文字列が返ってきます。
返す文字がない場合には空文字(""
)が返ってきます。
mb_substr関数で切り出す
mb_substr関数でも、文字列を切り出すことができます。
こちらの関数はsubstr関数のマルチバイト処理するための関数です。日本語文字列を切り取ることができます。
公式のドキュメントはこちらです。
先頭から切り出す
mb_substr関数も0以上の正数を渡すことで、文字列の先頭から参照して、切り出します。
例えば、下記のように使います。
$text = "ハロー、ワールド!";
echo mb_substr($text, 4); // ワールド!
echo mb_substr($text, 0, 3); // ハロー
$text変数に、切り取り対象の文字列「ワールド!」を代入しました。
次にmb_substr関数を使って、文字列を切り取っています。
第1引数に切り取り文字列で、第2引数に切り取り開始位置です。
4番目の位置から末尾まで切り取られて、出力すると「ワールド!」が出力されました。
次に引数を3つ渡しています。こちらもsubstrと同様に動作します。
第1引数に切り取り文字列で、第2引数に切り取り開始位置、第3引数に切り取る個数になります。
0番目から3個切り取るので、出力すると「ハロー」が出力されました。
末尾から切り出す
mb_substr関数でも-1以下の負数を渡すことで、文字列の末尾から参照して、切り出します。
例えば、下記のように使います。
$text = "はまち まぐろ サーモン たまご";
echo mb_substr($text, -3); // たまご
echo mb_substr($text, -8, 4); // サーモン
$text変数に、切り取り対象の文字列「はまち まぐろ サーモン たまご」を代入しました。
次にmb_substr関数の第2引数に-3を指定しています。
これで、文字列の末尾から3つ目の位置から、末尾までを切り取って返します。
結果、「たまご」が出力されました。
次にmb_substr関数の第2引数に-8を、第3引数に4を指定しています。
文字列の末尾から8つ目の位置から、4文字切り取られて返ってきます。
結果、「サーモン」が出力されました。
mb_substr関数もsubstr関数と同様に動作することが確認できました。
コメント