stristr

大文字小文字を区別しない strstr

説明

stringfalse stristr(string $haystack, string $needle, bool $before_needle = 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.0 needle は、空文字列を受け入れるようになりました。
8.0.0 needle に数値を渡すことはサポートされなくなりました。
7.3.0 needle に数値を渡すことは非推奨になりました。

例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