関数・クラス解説

stristr

version:PHP 4, PHP 5, PHP 7 (公式)

大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

フォーマット

string : stristr ( string $haystack , mixed $needle [, bool $before_needle = FALSE ] )

パラメータ

string $haystack
検索を行う文字列。ここで指定した文字列の中が検索される。

mixed $needle
検索したい文字列。ここで指定した文字列が含まれるかを検索する。数値も指定できるが非推奨なため、必ず文字列を指定すること。ここで指定したアルファベットは大文字小文字を区別せずにヒットします。

bool $before_needle = FALSE
返り値でどういう文字列を返却するかを指定することができます。デフォルトのFalse ではヒットした位置から後ろの文字列がすべて返却されます。この場合、ヒットした文字も含みます。
TRUE を指定すると、ヒット位置より前のが返りますが、この場合はヒットした文字は含まれません。

返値 string
マッチした部分文字列を返しますが、before_needle の指定により、ヒット位置前かヒット位置後の文字列が返ります。ヒットしなかった場合は FALSE を返が返ります。

解説

needleで指定した文字を検索し、ヒットした位置を含めてそれ以降の文字列をすべて返却します。before_needle を指定するとヒット位置を含めずに、それ以前の文字列をすべて返却します。
この関数ではアルファベットの大文字と小文字は区別されず、大文字と小文字どちらで検索してもヒットします。区別したい場合はstrstr()関数を使いましょう。大文字・小文字の区別以外は同様の動きをします。

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

記述サンプル

//PHP 7.4.6で実行
//文字列を指定
$str = 'ABCDEFGABCDEFG';

//実行 最初のE にヒットする
echo stristr($str, 'e');
EFGABCDEFG
※ヒットした文字が含まれる

//before_needle をtrue で実行
echo stristr($str, 'E', true);
ABCD

※ヒットした文字自体は含まれない
※before_needle がtrue でも検索方向自体は変わらないことに注意!

/* ----------------------------- */

//文字列を指定
$str = 'ABCDEFGABCDEFG';

//実行 
$res = stristr($str, 'z');

//結果 ヒットしない場合は False が返る
var_dump($res);
bool(false)

/* ----------------------------- */

//マルチバイト文字列を指定
$str = 'あいうえおかきくけこ';

//実行 
$res = stristr($str, 'か');

//結果
echo $res;
かきくけこ

参考リンク

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

タグ

検索 大文字 小文字 String 文字列


公式リファレンス

書式

stristr ( string $haystack , mixed $needle [, bool $before_needle = FALSE ] ) : string

説明

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

パラメータ

haystack
検索を行う文字列。
needle
needle が文字列でない場合、 数値に変換され、文字の通常の値として扱われます。 この振る舞いは PHP 7.3.0 以降では推奨されないので、 この機能を使用しないことを強く推奨します。 意図した動作に依存する場合、 needle を string に明示的にキャストするか、 明示的に chr() 関数を呼び出すべきでしょう。
before_needle
TRUE にすると、stristr() の返り値は、haystack の中で最初に needle があらわれる箇所より前の部分となります (needle は含めません)。
needle および haystack は大文字小文字を区別せずに評価されます。

返値

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

注意

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

更新履歴

バージョン 説明
7.3.0 needle に int を渡すことは非推奨になりました。

サンプル

例1 stristr() の例

  $email = 'USER@EXAMPLE.com';   echo stristr($email, 'e'); // 出力は ER@EXAMPLE.com となります   echo stristr($email, 'e', true); // PHP 5.3.0 以降では、出力は US となります

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

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

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

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

参考

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


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール