stristr

(PHP 4, PHP 5, PHP 7, PHP 8)

stristr大文字小文字を区別しない strstr()

説明

stristr(string$haystack, string$needle, bool$before_needle = false): string|false

haystack において needle が最初に見つかった位置を含めてそこから最後までを返します。

パラメータ

haystack

検索対象の文字列。

needle

検索する文字列。

PHP 8.0.0 より前のバージョンでは、needle が文字列でない場合、 数値に変換され、文字の通常の値として扱われていました。 この振る舞いは PHP 7.3.0 以降では推奨されないので、 この機能を使用しないことを強く推奨します。 意図した動作に依存する場合、 needle を string に明示的にキャストするか、 明示的に chr() 関数を呼び出すべきでしょう。

before_needle

true にすると、stristr() の戻り値は、haystack の中で最初に needle があらわれる箇所より前の部分となります (needle は含めません)。

needle および haystack は大文字小文字を区別せずに評価されます。

戻り値

マッチした部分文字列を返します。needle が見つからない場合は false を返します。

変更履歴

バージョン説明
8.2.0 ケースフォールディングは、setlocale() で設定されたロケールに依存しなくなりました。 ASCII のケースフォールディングのみが行われます。 ASCII でないバイト列は、バイト値として比較されます。
8.0.0needle は、空文字列を受け入れるようになりました。
8.0.0needle に数値を渡すことはサポートされなくなりました。
7.3.0needle に数値を渡すことは非推奨になりました。

例1 stristr() の例

<?php
$email
= 'USER@EXAMPLE.com';
echo
stristr($email, 'e'); // 出力は ER@EXAMPLE.com となります
echo stristr($email, 'e', true); // 出力は US となります
?>

例2 文字列が見つかるかどうかをテストする

<?php
$string
= 'Hello World!';
if(
stristr($string, 'earth') === FALSE) {
echo
'"earth" not found in string';
}
// 出力は "earth" not found in string となります
?>

例3 文字列以外の needle の指定

<?php
$string
= 'APPLE';
echo
stristr($string, 97); // 97 = 小文字の a
// 出力は APPLE となります
?>

注意

注意: この関数はバイナリデータに対応しています。

参考

  • strstr() - 文字列が最初に現れる位置を見つける
  • strrchr() - 文字列中に文字が最後に現れる場所を取得する
  • stripos() - 大文字小文字を区別せずに文字列が最初に現れる位置を探す
  • strpbrk() - 文字列の中から任意の文字を探す
  • preg_match() - 正規表現によるマッチングを行う
To Top