PHP で文字列にサブストリングが含まれているかどうかのチェック

Minahil Noor 2023年1月30日 2020年12月21日
  1. PHP で strpos() 関数を使用して文字列に部分文字列が含まれているかどうかを確認する
  2. PHP で文字列が部分文字列を含むかどうかを調べるには preg_match() 関数を用いる
PHP で文字列にサブストリングが含まれているかどうかのチェック

この記事では、strpos()preg_match() 関数を用いて PHP で文字列に部分文字列が含まれているかどうかを調べる方法を紹介します。

PHP で strpos() 関数を使用して文字列に部分文字列が含まれているかどうかを確認する

文字列に部分文字列が含まれているかどうかを調べるには、組み込みの関数 strpos() を使用します。このコマンドは、渡された部分文字列の出現をチェックします。

strpos($originalString, $checkString, $offset);

組み込み関数 strpos() は 3つのパラメータを持ち、以下で説明します。

パラメータ 説明
$originalString 強制的 これは、部分文字列をチェックしたい文字列です。
$checkString 強制的 これは $checkString でチェックしたい文字列です。
$offset 任意 これは検索処理の開始位置であり、オフセットが負の場合、検索処理は末尾から開始されます。

この関数は、元の文字列の位置に対する部分文字列の位置を返します。以下のプログラムは、文字列に部分文字列が含まれているかどうかを調べるために strpos() 関数を利用する方法を示しています。

<?php
$mystring = "This is a PHP program.";

if (strpos($mystring, "program.") !== false) {
    echo("True");
}
?>

出力:

True

パラメータ $offset を渡すと、関数は指定した位置から検索を開始します。

<?php
$mystring = "This is a PHP program.";

if (strpos($mystring, "PHP", 13) !== false) {
    echo("True");
} else {
    echo("False");
}
?>

出力:

False

オフセットよりも前の文字列を検索したので、出力には False と表示されています。

PHP で文字列が部分文字列を含むかどうかを調べるには preg_match() 関数を用いる

PHP では、文字列に特定の単語が含まれているかどうかを調べるために、preg_match() 関数を使用することもできます。この関数は正規表現を使ってパターンをマッチさせます。この関数を使用するための正しい構文は以下の通りです。

preg_match($pattern, $inputString, $matches, $flag, $offset);

関数 preg_match() は 5つのパラメータを受け付ける。パラメータの詳細は以下の通りです。

パラメータ 説明
$regexPattern 強制的 これは元の文字列の中から検索するパターンです。
$string 強制的 元の文字列の中で検索する文字列です。
$matches 任意 このパラメータにはマッチング処理の結果が格納されます。
$flag 任意 このパラメータはフラグを指定します。このパラメータには、PREG_OFFSET_CAPTUREPREG_UNMATCHED_AS_NULL の 2つのフラグがあります。
$offset 任意 このパラメータはマッチング処理の開始位置を指定します。

特定の単語が含まれているかどうかを調べるには、/{$search}/i というパターンを用います。文字列に特定の単語が含まれているかどうかを調べるプログラムは以下のようになります。

<?php
$mystring = "This is a php program.";
$search = "a";
if(preg_match("/{$search}/i", $mystring)) {
    echo "True"; } else {
    echo("False");
}
?>

出力:

True

関連記事 - PHP String