・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2022年6月14日に投稿されました。)
PHPで大文字小文字関係なく特定の文字列の位置を検索するにはstripos()を使用します。
stripos()とは指定した文字列が最初に表示される場所をインデックスで取得する関数になります。
こちらの関数はstrpos()とほとんど同じ関数になりますが、大文字と小文字が区別されることなく検索できるのが大きな違いとなります。
そして、if文の条件文としてstripos()を使用した場合、見つかった場合はtrueを、見つからなかった場合はfalseを通るようになります。
しかし、stripos()で検索した文字列が文頭であった場合は「0」を返しますが、if文では「false」を通りますにで注意してください。
今回はPHPのstripos()で大文字小文字関係なく検索文字列の最初の位置を取得する方法について紹介していきます。
stripos()とは
冒頭でも紹介しましたが、stripos()とは検索したい文字列を対象の文字列の中から最初に現れる場所を探す関数となります。
最初の場所を見つけることから、見つけた場所のインデックス(0からスタート)を返すようになります。
類似した関数でstrpos()がありますが、大文字と小文字は区別されることなく検索の対象となるのが、違いとなります。
もし、strpos()について詳しく知りたい場合は下記の記事をご参考ください。
stripos()の書き方
striposの書き方は下記のようになります。
1 | <?php stripos('検索対象の文字列', '検索する文字列'[, '検索開始位置']); ?> |
stripos()の中にパラメータを必ず2つ指定する必要がありますが、最大3つまで指定することができます。
stripos()のパラメータ
stripos()で指定するパラメータは下記のようになります。
- 検索対象の文字列(必須)
検索を対象とする文字列を指定する - 検索する文字列(必須)
検索したい文字列を指定する - 検索開始位置(任意)
検索開始位置をインデックスで指定する(スタートが0)
1つ目のパラメータは検索対象となる文字列を指定し、2つ目のパラメータは検索したい文字列を指定します。
そして、3つ目は、検索対象の文字列の検索開始位置(正の数か負の数)を指定することができます。
stripos()で大文字小文字関係なく検索文字列の最初の位置を取得するサンプルコード
stripos()で大文字小文字関係なく検索文字列の最初の位置を取得するサンプルコードを紹介します。
ここでは下記の2つの場合でstripos()を使用してみます。
- 検索する文字列が見つかった場合
- 検索する文字列が見つからなかった場合
検索する文字列が見つかった場合
stripos()で検索した文字列が見つかった場合は、見つかった位置をインデックス(0がスタート)で返すようになります。
1 2 3 4 5 6 7 8 9 | <?php $text1 = 'I live in Japan.'; echo '・検索対象の文字列: '.$text1; $search1 = 'LIVE'; echo '・検索する文字列:' .$search1; $serachText1 = stripos($text1, $search1); echo 'stripos()で特定の文字列を検索した結果: '. $serachText1; ?> |
実行結果
stripos()によって検索した文字列を大文字や小文字関係なく、インデックスで取得しています。
そのため、「LIVE」は大文字ですが3番目にあるので「2」が表示されています。
検索する文字列が見つからなかった場合
stripos()で検索した文字列が見つからなかった場合は、値としては何も返されません。
1 2 3 4 5 6 7 8 9 | <?php $text2 = 'I live in Japan.'; echo '・検索対象の文字列: '.$text2; $search2 = 'CHINA'; echo '・検索する文字列:' .$search2; $serachText2 = stripos($text2, $search2); echo 'stripos()で特定の文字列を検索した結果: '. $serachText2; ?> |
実行結果
「CHINA」を検索しましたが、対象の文字列になかったため、何も表示されていません。
検索開始位置を指定してstripos()で大文字小文字関係なく検索文字列の最初の位置を取得するサンプルコード
続いて、検索開始位置を指定してstripos()で検索文字列の最初の位置を取得するサンプルコードをご紹介していきます。
検索開始位置を指定するため、stripos()に検索開始位置のパラメータを指定します。
ここでは下記の2つの場合でstrops()を使用してみます。
- 検索開始位置に正の整数を指定して文字列を検索した場合
- 検索開始位置に負の整数を指定して文字列を検索した場合
検索開始位置に正の数を指定した場合
検索開始位置に正の整数を指定して文字列を検索した場合は、文字列の頭から数えた位置をスタート地点として文字列を検索するようになります。
1 2 3 4 5 6 7 8 9 | <?php $text3 = 'I live in Japan. I live in Japan.'; echo '・検索対象の文字列: '.$text3; $search3 = 'LIVE'; echo '・検索する文字列:' .$search3; $serachText3 = stripos($text3, $search3, 10); echo 'stripos()で特定の文字列を検索した結果: '. $serachText3; ?> |
実行結果
3つ目のパラメータに「10」指定したことで、文頭から11番目を検索対象として、文字列の検索が行われています。
そのため、2つ目のliveの位置にある「19」が返されています。
検索開始位置に負の数を指定した場合
検索開始位置に負の整数を指定して文字列を検索した場合は、文字列の末尾から数えた位置をスタート地点として文字列を検索するようになります。
1 2 3 4 5 6 7 8 | <?php $text4 ='I live in Japan. I live in Japan.'; echo '・検索対象の文字列: '.$text4; $search4 = 'IN'; echo '・検索する文字列:' .$search4; $serachText5 = stripos($text4, $search4, '-4'); echo 'stripos()で特定の文字列を検索した結果: '. $serachText4; |
実行結果
3つ目のパラメータに「-4」指定したことで、文末から4番目の部分を検索対象として、文字列の検索が行われています。
そのため、「IN」は検索対象の文字列に入っていないため、何も表示されません。
stripos()をif文の条件式として使用した場合
stripos()をif文の条件式として使用した場合についてご紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?php $text5 = 'Tokyo is the capital of Japan.'; echo '・検索対象の文字列: '.$text5; $search5_1 = 'JAPAN'; echo '・検索する文字列:' .$search5_1; $serachText5_1 = stripos($text5, $search5_1); echo 'stripos()で特定の文字列を検索した結果: '. $serachText5_1; if($serachText5_1) { echo 'if文の条件式に使用した結果: trueです。'; } else{ echo 'if文の条件式に使用した結果: falseです。'; } $search5_2 = 'KYOTO'; echo '・検索する文字列:' .$search5_2; $serachText5_2 = stripos($text5, $search5_2); echo 'stripos()で特定の文字列を検索した結果: '. $serachText5_2; if($serachText5_2) { echo 'if文の条件式に使用した結果: trueです。'; } else{ echo 'if文の条件式に使用した結果: falseです。'; } $search5_3 = 'TOkyo'; echo '・検索する文字列:' .$search5_3; $serachText5_3 = stripos($text5, $search5_3); echo 'stripos()で特定の文字列を検索した結果: '. $serachText5_3; if($serachText5_3) { echo 'if文の条件式に使用した結果: trueです。'; } else{ echo 'if文の条件式に使用した結果: falseです。'; } ?> |
実行結果
stripos()で検索した文字列が見つかったため、trueの条理が行われています。
しかし、文字列が見つからなかった場合は、falseの処理が行われています。
また、インデックスが「0」を返す場合、falseを通るようになりますので注意してください。
PHPで特定の文字列の位置を検索する関数
PHPで特定の文字列の位置を検索する関数はstripos()以外にも存在します。
例えば、検索する文字列の最後の位置を返すstrrpos()や検索した文字列から末尾までを返すstrstr()などがあります。
それぞれ返り値が異なりますが、どれも文字列を検索する関数となります。
ここでは詳しくご紹介しませんが、もし詳しく知りたい場合は下記の記事をご参考ください。
まとめ
⚫︎ stripos()とは検索したい文字列を対象の文字列の中から最初に現れる場所を探す関数である
(大文字と小文字は区別されない)
⚫︎ stripos()のパラメータは2つ必須だが、最大3つまで指定できる
・ 検索対象の文字列(必須)
・ 検索する文字列(必須)
・ 検索開始位置(任意)
⚫︎ 検索した文字列が見つかった場合は、見つかった位置をインデックス(0がスタート)で返す
⚫︎ 検索した文字列が見つからなかった場合は、値としては何も返されない
⚫︎ 検索開始位置に正の整数を指定して文字列を検索した場合、文字列の頭から数えた位置をスタート地点として文字列を検索する
⚫︎ 検索開始位置に負の整数を指定して文字列を検索した場合、文字列の末から数えた位置をスタート地点として文字列を検索する
⚫︎ stripos()をif文の条件式として使用した場合、「0」と空の場合は「false」を通り、それ以外は「true」を通る