関数・クラス解説
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 が見つからない場合は 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 となります
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール