stristr

関数の概要

PHPの stristr 関数は、指定した文字列内で特定の文字列を大文字・小文字を区別せずに検索し、検索文字列が最初に現れる位置から後ろの部分文字列を取得するための関数です。文字列の検索をケースインセンシティブ(大文字小文字を無視)で行いたい場合に便利です。

パラメータの説明

  • haystack(必須): 検索対象の文字列。
  • needle(必須): 検索する文字列。部分文字列でも可。
  • before_needle(省略可能): trueを指定すると、検索文字列の直前までの部分文字列を返します。デフォルトは false で、検索文字列以降を返します。

戻り値

検索文字列が見つかった場合は、haystackの中で needle が最初に出現する位置からの部分文字列を返します。before_needletrue を指定した場合は、needle の直前までの文字列を返します。
検索文字列が見つからなかった場合は false を返します。

使用例

基本的な使い方

<?php
$str = "Hello World";
$result = stristr($str, "world");
echo $result; // 出力: World
?>

この例では「world」を大文字小文字を区別せずに「Hello World」から検索し、「World」以降の部分文字列が返されます。

検索文字列の前までを取得する

<?php
$str = "user@example.com";
$result = stristr($str, "@", true);
echo $result; // 出力: user
?>

ここではメールアドレスの「@」以前のユーザー名部分を取得しています。trueを指定することで、指定文字列の前までの文字列を取得可能です。

検索文字列が見つからない場合

<?php
$str = "Apple Banana Cherry";
$result = stristr($str, "orange");
var_dump($result); // 出力: bool(false)
?>

検索対象文字列内に「orange」が存在しない場合、関数は false を返します。

日本語文字の検索も可能

<?php
$str = "こんにちは世界";
$result = stristr($str, "世界");
echo $result; // 出力: 世界
?>

マルチバイト文字列も問題なく検索できます。ここでは「世界」以降の文字列が返されます。

関連する関数

  • strstr: stristrと似ていますが、大文字小文字を区別して検索します。
  • strpos: 大文字小文字を区別して文字列の位置を返します。
  • stripos: 大文字小文字を区別しない文字列の位置検索に使います。
  • substr: 文字列の一部を取得するときに使います。

まとめ

stristr は大文字小文字を区別せずに文字列の検索を行い、特定の文字列以降または以前の部分文字列を簡単に取得できる便利な関数です。メールアドレスのユーザー名取得や、検索文字列の位置によって文字列を分割したい場合などに実務で活躍します。
似た関数の strstr は大文字小文字を区別するため、目的に応じて使い分けることをおすすめします。