【PHP】文字列から特定の文字列が含まれているか確認する方法
文字列の中から特定の文字列が含まれているか?それを確かめたい状況は結構あると思います。
PHPには文字列に関する操作の中で便利な機能がたくさんありますが、文字列から特定の文字列が含まれているかを確認する方法が幾つかあります。
今回はPHPの関数を使って特定の文字が含まれているかどうか確認する方法を記事に残しておきます。
「strstr」関数
「strstr」関数は、「指定した文字列が検索文字列の中に含まれている場合、指定した文字が最初に現れる場所を含めてそこから文字列の終わりまでを返す」関数です。
文章で書くと少々分かりにくいですね(;^ω^)。サンプルコードを使って実際に見てみたほうが分かりやすいですね。
それでは早速サンプルを作ってみましょう。
1 2 3 4 5 6 7 |
<?php //strstr("検査する文字列","検索したい文字列"); $test = "abcdefg@yahoo.co.jp"; $answer = strstr($test,"@"); echo $answer; ?> |
それでは実行結果を見てみましょう。
1 2 |
//実行結果 @yahoo.co.jp |
検索したい文字列である「@」が最初に現れる場所から文字列の最後までを返しています。
もし検索文字列が、検査対象の中にない場合、なんの値も返って来ません。
この性質を利用して、「if」文と組み合わせることで特定文字が含まれていた場合の分岐を作ることができます。
サンプルコードを下記に記載してみます
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $test = "春夏秋冬"; $answer = strstr($test,"春"); if($answer){ echo "指定された文字が含まれています"; } else { echo "指定された文字は含まれていません"; } //実行結果 指定された文字が含まれています ?> |
上のコードは、「春夏秋冬」という検査対象の中に「春」という文字を検索し、実行結果として「指定された文字が含まれています」が返って来ました。「$answer」の中に値が存在することにより「if」文のTRUE結果が返ってくるプログラムです。
念のため、検索文字が含まれていない場合も見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $test = "春夏秋冬"; $answer = strstr($test,"季"); if($answer){ echo "指定された文字が含まれています"; } else { echo "指定された文字は含まれていません"; } //実行結果 指定されてた文字は含まれていません ?> |
検索文字がない場合、FALSEの実行結果が返って来ます。
このように「strstr」と「if」を組み合わせることによって、特定の文字を調べるプログラムを作ることができます。
さて、ここで一つ注意点があります。
この「strstr」関数は大文字と小文字を区別するということです。
大文字と小文字を区別したくない場合は「stristr」を使います。
「stristr」関数
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $test = "Hello"; $answer = stristr($test,"L"); if($answer){ echo "指定された文字が含まれています"; } else { echo "指定された文字は含まれていません"; } //実行結果 指定された文字が含まれています ?> |
「strpos」関数
「strpos」という関数もあります。「strpos」関数は「指定した文字列が検索文字列内に存在する場合、最初の文字を0にして指定した文字が最初に現れる番号」を返す関数です。やっぱり文字にすると長ったらしいですね(;^ω^)
早速サンプルを見てみましょう。
1 2 3 4 5 6 7 8 |
<?php $test = "Hello"; $answer = strpos($test,"o"); echo $answer; //実行結果 4 ?> |
「strpos」関数で「Hello」の文字列から「o」の場所を探します。一番最初の文字が0なので、「o」の位置である4が返ってきています。
終わりに
今回は「strstr」関数と「stristr」関数、「strpos」関数で簡単ですが含まれていた場合を判定するプログラムを作ってみました。
この他にも文字列内から特定の文字を操作する方法が幾つかあります。
「strstr」と「stristr」のように、役割は同じでも細かな違いがある関数も多いので、違いを理解し状況によって使い分けていきましょう。
それでは今回はここまでです。お疲れ様でした(・ω・)ノシ