定義と使い方
- PHPバージョン
- 8+
str_contains()は文字列に特定の文字列が含まれているかを確認する関数です。
特徴
- 文字列の中に指定した文字列が含まれている場合は
trueを、含まれていない場合はfalseを返します。 - 大文字と小文字を区別します。
- PHP 8で導入された関数のため、PHP 8以前のバージョンでは互換性がありません。
基本例
$haystack = 'はじめまして!コーディングエブリバディです。';
$needle = 'コーディング';
if (str_contains($haystack, $needle)) {
echo "文字列に「$needle」が含まれています。";
} else {
echo "文字列に「$needle」は含まれていません。";
}
// 出力: "文字列に「コーディング」が含まれています。"
構文
str_contains(string $haystack, string $needle): bool
引数
$haystack |
検索対象となる文字列です。 |
|---|---|
$needle |
検索する文字列です。 大文字と小文字を区別します。 |
戻り値
検索対象となる文字列の中に、指定した検索文字列が含まれている場合はtrueを、含まれていない場合はfalseを返します。指定した検索文字列は大文字と小文字を区別します。
検索する文字列が空文字列('')の場合
空文字列('')はすべての文字列の末尾に存在するとみなされるため、空文字列をstr_contains()に指定した場合は常にtrueを返します。
if (str_contains('abc', '')) {
echo '空文字列が含まれているかを確認すると、常にtrueが返されます';
}
// 出力: '空文字列が含まれているかを確認すると、常にtrueが返されます'
このような動作は、文字列の論理的な定義に基づいています。空文字列は、どの文字列の先頭または末尾にも存在すると考えられるため、空文字列で始まる、または空文字列で終わるすべての文字列に対してtrueを返すのは自然な結果です。そのため、この考え方はPHPに限らず、多くのプログラミング言語で一般的に適用されています。
注意点
str_contains()関数は大文字と小文字を区別します。
$haystack = 'Hello, World!';
if (str_contains($haystack, 'world!')) {
echo "文字列に「world!」が含まれています。";
} else {
echo "大文字と小文字が一致しないため、「world!」を見つけることができません。";
}
// 出力: "大文字と小文字が一致しないため、「world!」を見つけることができません。"
Polyfill
PHP 8で導入された関数のため、PHP 8以前のバージョンでは互換性がありません。
PHP 8以前のバージョンでは互換性がない(サポートされていない)ため、PHP 8以前のバージョンでは次のように使用することもできます。
注意事項
以下のサンプルコードは、PHP 8以前のバージョンでstr_contains()関数を代替するための簡単なpolyfillの例です。完全ではありません。このpolyfillは基本的な使用ケースを想定して作成されていますが、利用者ごとの要件(PHPのバージョン、パフォーマンスの考慮、大文字と小文字の区別、空文字列の扱い、多言語文字列の処理、その他の状況など)に応じて、柔軟性を追加する必要がある場合があります。
str_contains()関数のpolyfillの例
if (!function_exists('str_contains')) {
/*
* str_contains()関数のpolyfillの例
* 出典: https://core.trac.wordpress.org/browser/trunk/src/wp-includes/compat.php#L423
*/
function str_contains($haystack, $needle) {
if ('' === $needle) {
return true;
}
return false !== strpos($haystack, $needle);
}
}
$haystack = 'はじめまして!コーディングエブリバディです。';
$needle = 'コーディング';
if (str_contains($haystack, $needle)) {
echo "文字列に「$needle」が含まれています。";
} else {
echo "文字列に「$needle」は含まれていません。";
}
// 出力: "文字列に「コーディング」が含まれています。"
コード補足説明strpos()
関数は、文字列の中から特定の文字列の位置を検索する関数です。大文字と小文字を区別します。
PHP 8以前のバージョンで文字列に特定の文字列が含まれているかを確認する場合は、strpos()
関数を活用して使用してください。
例
str_contains()関数は、文字列に特定の文字列が含まれているかを確認する際に便利です。例えば、検索機能や文字列処理に適しています。以下は、str_contains()関数の使用例の一部です。
検索機能の実装
$searchTerm = 'りんご';
$text = '私はりんごとバナナが好きです。';
if (str_contains($text, $searchTerm)) {
echo "テキストに「$searchTerm」という単語が含まれています。";
} else {
echo "テキストに「$searchTerm」という単語は含まれていません。";
}
// 出力: "テキストに「りんご」という単語が含まれています。"
文字列のフィルタリング
$content = 'この文章には望ましくない単語が含まれています。';
$unwantedWords = ['望ましくない', '悪い', '不適切な'];
foreach ($unwantedWords as $word) {
if (str_contains($content, $word)) {
$content = str_replace($word, '***', $content);
}
}
echo $content;
// 出力: 'この文章には***単語が含まれています。'
コード補足説明foreach()ループは、配列やオブジェクトを順に処理するために使用される代表的な構文です。
コード補足説明str_replace()は、文字列の中から特定の文字列を検索し、別の文字列に置き換える関数です。
URLの検査
$fileName = 'document.pdf';
$allowedExtensions = ['pdf', 'docx', 'txt'];
$fileExtension = pathinfo($fileName, PATHINFO_EXTENSION);
if (in_array($fileExtension, $allowedExtensions)) {
echo 'ファイルの拡張子は有効です。';
} else {
echo '無効なファイル拡張子です。';
}
// 出力: 'ファイルの拡張子は有効です。'
コード補足説明in_array()関数は、配列の中に特定の値が存在するかを確認します。