column

ITコラム

mv15763

プログラミングノウハウ

2019.04.18

PHP【文字列】文字列の検索

PHP では、関数 strpos や preg_match を使用して文字列を検索することができます。
今回は PHP で文字列を検索する方法を紹介します。
 
本サイトでは XAMPP( ザンプ )という開発環境を使用しています。
XAMPP のインストール方法や起動方法については以下の記事をご参照下さい。
PHP【 開発環境 】XAMPP インストール
PHP【 開発環境 】XAMPP の使い方

なお、未経験からITエンジニアへの就職に興味がある方や未経験からプログラミングを効率よく学びたいと考えている方は、就職率98.3%で受講料無料のプログラミングスクールプログラマカレッジもおすすめです。

最終更新日:2019年4月18日

1. strpos で文字列を検索

strpos 関数は、文字列中のある文字列を検索する関数です。

実行すると、指定した文字列が最初に現れる位置が 検索対象文字列の 1 文字目を 0 とする数値で返ります。

strpos 関数は 次のように記述して使用します。

strpos(検索対象文字列, 指定文字列[, 検索開始位置]);

第 1 引数には、検索対象となる文字列を指定します。

第 2 引数には、検索する文字列を指定します。

第 3 引数には、検索開始位置を検索対象文字列の 1 文字目を 0 とする数値で指定することができます。
第 3 引数に負の数を指定すると、検索対象文字列の末尾から 数値分戻った位置が検索開始位置となります。

strpos のサンプル

strpos 関数を使用して 文字列を検索してみます。

下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)

<?php

  $str = "All is well that ends well.";
  echo strpos($str, "well");
  echo "<br><br>";
  echo strpos($str, "well", -5);

?>

PHP 文字列 検索 プログラマカレッジ

「 echo 」は、データを出力するために使用する PHP の命令です。

「 strpos($str, “well”) 」では、検索対象文字列の中で 検索文字列の先頭の文字「 w 」が最初に現れる位置( 検索対象文字列の先頭文字 A を 0 とする数値で、スペースもカウントする )の 7 が返ります。

「 strpos($str, “well”, -5) 」では、検索開始位置を負の数値で指定しているので、末尾から 5 文字分遡った「 w 」から末尾までが検索対象となります。
そして、後ろの方にある 検索文字列 well の先頭の文字「 w 」の位置である 22 が返ります。

▲目次へ戻る

 

2. preg_match で文字列を検索

preg_match 関数は、文字列を正規表現で検索する関数です。

実行すると、指定した正規表現が含まれていた場合は「 1 」、含まれていなかった場合は「 0 」、正常に処理できなかった場合は「 false 」が返ります。

preg_match 関数は 次のように記述して使用します。

preg_match(正規表現, 検索対象文字列[, $array[, オプション[, 検索開始位置]]]);

第 1 引数には、検索する正規表現のパターンを指定します。

第 2 引数には、検索対象となる文字列を指定します。

第 3 引数には、配列変数を指定することができ、配列変数[0] にはパターン全体に合致した文字列が格納され、配列変数[1] 以降には 1 番目以降の各キャプチャ用サブパターンに合致した文字列がそれぞれ格納されます。

第 4 引数には、次のオプションを指定することができます。
・PREG_OFFSET_CAPTURE:各検索結果と共にオフセット値も返る( 第 3 引数の戻り値である文字列とオフセット値を 1 つの配列として、それが各戻り値分格納された 2 次元配列が返る )

第 5 引数には、検索開始位置を検索対象文字列の 1 文字目を 0 とする数値で指定することができます。

preg_match のサンプル

preg_match 関数を使用して文字列を検索し、パターンに合致した文字列が配列変数に格納されるようにしてみます。

下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)

<pre>
<?php

  $str = "0123456789";
  preg_match("/(01234)(56789)/", $str, $ary, PREG_OFFSET_CAPTURE);
  print_r($ary);

?>
</pre>

PHP 文字列 検索 プログラマカレッジ

preg_match 関数の第 3 引数に配列変数を指定すると、パターン全体に合致した文字列及び各キャプチャ用サブパターンに合致した文字列が 指定した配列変数に格納されます。

そして 第 4 引数に「 PREG_OFFSET_CAPTURE 」を指定すると、第 3 引数で指定した配列変数は、検索で合致した文字列とそのオフセット値( 先頭文字の位置 )がペアで格納される 2 次元配列となります。

print_r 関数や <pre> ~ </pre> についてはprint_r で出力をご参照下さい。

▲目次へ戻る

無料説明会

SHARE

最新記事

無料説明会に参加してみる

INTERNOUS,inc. All rights reserved.

無料オンライン説明会へ