指定した文字列が見つかるか調べる

 ある文字列の中に指定した文字列が含まれるかどうかを調べる方法を見てみましょう。次の関数が用意されています。

■ strpos関数

 strpos関数は、対象となる文字列の中に指定した文字列が最初に現れる位置を返します。

関数名 strpos
パラメーターリスト
パラメター名 説明
string $haystack 検索のターゲットとなる文字列
string $needle 検索する文字列
返り値
int 0から始まる見つかった位置を、見つからない場合はFALSEを返す
strpos関数の仕様

○ ファイル

 「PregSplitTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。

ファイルの種類 PHPファイル
ファイル名 StrPosTest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを記述してください。

StrPosTest.php

  1. <head>
  2. <meta charset="UTF-8">
  3. <title>文字列検索</title>
  4. </head>
  5. <body>
  6. <?php
  7. //ターゲットとなる文字列を用意する
  8. $target = '今日の夕食はカレーライスです。';
  9. //「カレー」を検索する
  10. if(strpos($target, 'カレー') !== false){
  11.  print('今日はカレーです。');
  12. }else{
  13.  print('今日はカレーではありません。');
  14. }
  15. print('<hr>');
  16. //「焼肉」を検索する
  17. if(strpos($target, '焼肉') !== false){
  18.  print('今日は焼肉です。');
  19. }else{
  20.  print('今日は焼肉ではありません。');
  21. }
  22. ?>
  23. </body>

○ 実行結果

実行結果
実行結果

○ 解説

 10行目で、検索対象の文字列を準備しています。13行目でその文字列内にカレーが含まれるかを検索しています。「strpos」関数は見つかったらその位置を返すので、見つかったかどうかを確認する場合は「false」ではないかどうかを判定することができます。今回は「カレー」という文字列が含まれるので、「false」ではないと判断され、「今日はカレーです。」と表示されます。

 20行目では、検索対象文字列内に「焼肉」が含まれるかどうかを判定しています。含まれないため「false」が返ります。そのため、「今日は焼肉ではありません。」と表示されます。

■ preg_match関数

 preg_match関数は、対象となる文字列の中に正規表現で指定した文字列が含まれるかどうかを確認します。

関数名 preg_match
パラメーターリスト
パラメター名 説明
string $pattern 検索するパターンを表す文字列
string $subject 検索する文字列
返り値
int パターンにマッチした場合は1を、マッチしなかった場合は0を返す
preg_match関数の仕様

○ ファイル

 「StrPosTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。

ファイルの種類 PHPファイル
ファイル名 PregMatchTest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを記述してください。

PregMatchTest.php

  1. <body>
  2. <?php
  3. //ターゲットとなる文字列を用意する
  4. $target = '今日の夕食はカレーライスです。';
  5. //「カレー」を検索する
  6. if(preg_match('/カレー/', $target) == 1){
  7.  print('今日はカレーです。');
  8. }else{
  9.  print('今日はカレーではありません。');
  10. }
  11. print('<hr>');
  12. //「焼肉」を検索する
  13. if(preg_match('/焼肉/', $target) == 1){
  14.  print('今日は焼肉です。');
  15. }else{
  16.  print('今日は焼肉ではありません。');
  17. }
  18. print('<hr>');
  19. //「今日」から始まるかどうかを確認する
  20. if(preg_match('/^今日/', $target) == 1){
  21.  print('今日です。');
  22. }else{
  23.  print('今日ではありません。');
  24. }
  25. print('<hr>');
  26. //「ライスです。」で終わるかどうかを確認する
  27. if(preg_match('/ライスです。$/', $target) == 1){
  28.  print('ライスです。');
  29. }else{
  30.  print('ライスではありません。');
  31. }
  32. ?>
  33. </body>

○ 実行結果

実行結果
実行結果

○ 解説

 13行目で、「preg_match」関数を使用しています。第1引数に正規表現を指定します。今回は「/カレー/」を引数として渡しています。これにより「カレー」がターゲットとなる文字列内に含まれるので「1」が返ってきます。20行目では、「焼肉」がターゲットとなる文字列に含まれるかを確認しています。含まれていないので「0」が返ってきます。

27行目では、「今日」から始まるかどうかを確認しています。正規表現で「^○○」と指定することで前方一致かどうかを確認できます。今回は「今日」から始まるので、「1」が返ってきます。34行目では、「ライスです。」で終わるかどうかを確認しています。正規表現で「○○$」と指定することで後方一致かどうかを確認できます。今回は「ライスです。」で終わるので、「1」が返ってきます。

前へ   次へ