PHP で文字列の一部を抽出する場合は substr 関数を使用しますが、substr 関数では意図する結果が得られない場合もあります。
今回は PHP で文字列を抽出する方法を紹介します。
本サイトでは XAMPP( ザンプ )という開発環境を使用しています。
XAMPP のインストール方法や起動方法については以下の記事をご参照下さい。
PHP【 開発環境 】XAMPP インストール
PHP【 開発環境 】XAMPP の使い方
なお、未経験からITエンジニアへの就職に興味がある方や未経験からプログラミングを効率よく学びたいと考えている方は、就職率98.3%で受講料無料のプログラミングスクールプログラマカレッジもおすすめです。
最終更新日:2019年5月9日
substr 関数は、文字列中の一部を抽出する関数です。
実行すると、抽出した文字列が返ります。
substr 関数は 次のように記述して使用します。
substr(文字列, 抽出開始位置[, 抽出範囲]);
第 1 引数には、抽出対象となる文字列を指定します。
第 2 引数には、抽出範囲の開始位置を 1 文字目を 0 とする数字で指定します。
第 2 引数に負の数を指定すると、抽出対象文字列の末尾から 数値分戻った位置が開始位置となります。
第 3 引数には、抽出範囲を文字列の長さで指定することができます。指定しない場合は、第 2 引数で指定した開始位置以降の全てが抽出範囲となります。
第 3 引数に負の数を指定すると、検索対象文字列の末尾から 数値分の文字列が抽出対象から除外されます。
substr 関数を使用して 文字列の一部を抽出してみます。
下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)
<?php
$str = "19001andomale";
echo substr($str, 3);
echo "<br>";
echo substr($str, 5, 4);
echo "<br>";
echo substr($str, -4);
echo "<br>";
echo substr($str, -8, -4);
?>
「 echo 」は、データを出力するために使用する PHP の命令です。
「 substr($str, 3) 」は、第 2 引数に「 3 」を指定しているので 先頭から 4 文字目が抽出開始文字となります。
また、第 3 引数の指定がないため、開始文字以降の全ての文字列が抽出されます。
「 substr($str, 5, 4) 」は、第 2 引数に「 5 」、第 3 引数に「 4 」を指定しているので、先頭から 6 文字目以降の 4 文字が抽出されます。
「 substr($str, -4) 」は、第 2 引数に負の数「 -4 」を指定しているので、末尾から 4 文字目以降が抽出されます。
「 substr($str, -8, -4) 」は、第 2 引数より 末尾から 8 文字目が抽出開始文字となりますが、第 3 引数に負の数「 -4 」を指定しているので 末尾から 4 文字目以降は除外され、末尾から 5 文字目までの文字列が抽出されます。
英数字のみの文字列に関しては substr 関数で問題なく文字列の抽出ができますが、漢字や平仮名等が入った文字列から substr 関数を使用して文字列の抽出を行うと、意図した結果が得られない場合があります。
そこで、英数字以外の文字が入った文字列に関しては、mb_substr 関数を使用して文字列の抽出を行います。
mb_substr 関数も、substr 関数と同様に文字列中の一部を抽出する関数です。
実行すると、抽出した文字列が返ります。
mb_substr 関数は 次のように記述して使用します。
mb_substr(文字列, 抽出開始位置[, 抽出範囲[, エンコーディング]]);
mb_substr 関数を使用して 文字列を抽出してみます。
下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)
<?php
$str = "19001安藤男";
echo substr($str, 7);
echo "<br>";
echo mb_substr($str, 7);
echo "<br>";
echo mb_substr($str, 5, 2);
echo "<br>";
echo mb_substr($str, -1);
?>
「 echo 」は、データを出力するために使用する PHP の命令です。
「 substr($str, 7) 」では抽出した文字列が文字化けしているのに対して、「 mb_substr($str, 7) 」では 半角文字か全角文字かに関わらず 8 文字目以降の文字列が正常に抽出されています。
「 mb_substr($str, 5, 2) 」も、先頭から 6 文字目以降の 2 文字が正常に抽出されています。
また、負の数を指定した「 substr($str, -1) 」についても、末尾から 1 文字が抽出されています。
INTERNOUS,inc. All rights reserved.