PHP で文字列にサブストリングが含まれているかどうかのチェック
Minahil Noor
2023年1月30日
この記事では、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_CAPTURE と PREG_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