strstr関数の使い方!PHPで文字列を検索する方法【初心者向け】

プログラミング初心者向けにPHPで文字列を検索する方法について解説しています。文字列検索はよく利用されます。strstr関数、strpos関数を実際ソースコードを書いて説明しているので、ぜひ覚えていきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

PHPで文字列の中から特定の文字列を探す場面というのは比較的多いかと思います。

文字列を検索する方法はいくつかありますが、今回は「strstr関数」「strpos関数」「preg_match関数」を解説します。

全ての関数の使い方を覚える必要はありませんが、1つでも書き方を覚えておくといざという時便利でしょう。

 

なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。

 

大石ゆかり

田島メンター!スクレイピングに興味があるのですが、どうすればいいんでしょうか。

田島悠介

ソースコードを取得するのと、中身の文章を検索する必要があるね。

大石ゆかり

何か難しそうですね。

田島悠介

少しずつ覚えれば簡単だよ。今回は、文字列の検索に使う関数をざっと見てみよう!

 

strstr関数

strstr関数は対象の文字列から検索したい文字列を検索する関数です。strstr関数は単純に文字列が存在するかどうかを確かめたい時に使います。strstr関数の使い方は次のとおりです。

strstr(対象の文字列, 検索したい文字列)

例えば、strstr(“abcdefg”, “cde”) と実行すると、abcdefgの中からcdeを検索します。検索して該当する文字列があった場合、「対象の文字列」が、ない場合はFALSEが戻り値となります。

大文字小文字を区別しないで検索したい場合は「stristr関数」を使うことで実現できます。

 

strpos関数

strpos関数は、対象の文字列から検索した文字列が最初にどの位置にあるかを検索する関数です。strstr関数よりも詳細に文字列パターンの位置を把握できるので、その部分で文字列を分割したい場合などに使われます。

strpos関数の使い方は次のとおりです。

strpos(対象の文字列, 検索したい文字列)

例えば、strpos(“asbabdabcasf”, “abc”)と実行すると、6という数値が返ってきます。これはabcの文字列のaの一を指しています。ない場合は、FALSEが戻り値となります。

また注意として、例えばstrpos(“asbabdabcasf”, “asb”)を検索した場合、0という値が返ってしまうため、if文などで判定する場合は注意が必要です。

 

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

 preg_match関数

preg_match関数は、対象の文字列から正規表現パターンの文字列があるかないかを検索する関数です。

strstr関数よりも複雑な文字列パターンを見つけたい時に使われる関数です。preg_match関数の使い方は以下のとおりです。

返り値 = preg_match(/正規表現パターン/,対象の文字列)

対象の文字列から正規表現パターンに一致する文字列がある場合は1を、ない場合は0を返り値として返します。

 

大石ゆかり

正規表現?これは他の2つの関数と違って、わかりにくいですね。

田島悠介

特殊な文字を使って文字列を表現する方法なんだよ。検索に使ったり、検索して該当した箇所を切り取ることも出来るんだ。

大石ゆかり

どういった時に使うんでしょうか?

田島悠介

例えば、あるサイトからページのタイトルを取得したいとするよね。そういう場合titleタグからはじまり、0文字以上が続いて、titleタグの終了タグまで、というふうに表現して、切り取ることも出来るんだ。

 

実際に書いてみよう

ここではstrstr関数を使ってプログラムを書いてみます。

------------------------------------------------
<?php
$a = "asfasbcasdfnaosdfaabc";
$b = "abc";
if( strstr($a, $b) ){
  echo "{$a}の中に{$b}は含まれています。\n";
}else{
  echo "{$a}の中に{$b}は含まれていません。\n";
}
?>
------------------------------------------------

以下、実行結果です。

------------------------------------------------
asfasbcasdfnaosdfaabcの中にabcは含まれています。
------------------------------------------------

 

最後に

文字列検索は様々な場面で用いられます。今回は説明を省略してしまいましたが、正規表現は文字列検索ではとても強力なツールです。少しずつでも使って慣れていきましょう。

 

大石ゆかり

上の例だと、abcがありますね。戻り値がabcになり、trueと判断されてif文直下の処理が実行されるんですね。

田島悠介

そうそう。

大石ゆかり

単純に文字列が、あるか無いかだとstrstr関数でも、strposでも良さそうですね。

田島悠介

そうだね。ただ、微妙だけどそういう単純な検索はstrposのほうが速いんだよ。

 

また、PHPを勉強していて、

  • もっと効率的に勉強したい
  • 誰かに聞きながら学びたい
  • 自分でWebサービスを作りたい

と思ったことはないでしょうか。

 

そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。