関数・クラス解説
stripos
version:PHP 5, PHP 7 (公式)大文字小文字を区別せずに文字列が最初に現れる位置を取得する
フォーマット
int : stripos ( string $haystack , mixed $needle [, int $offset = 0 ] )
パラメータ
string $haystack
検索元となる文字列を指定。ここで指定した文字列内が検索されることになります。
mixed $needle
検索したい文字列を指定します。ひとつまたは複数の文字を指定することができます。意図しない作動をする場合があるため、必ずstring 型の文字列で指定することが推奨されています。
int $offset = 0
検索開始位置を指定することができます。負の数を指定した場合、文字列の末尾方向から指定数を数えた位置から検索を開始します。負の値指定時でも検索方向自体は変わらないことに留意しましょう。
返値 int
needle で指定した文字が見つかった位置を、文字列の先頭からの相対位置で返却します。返却される値は、offset の値とは無関係であることに注意してください。文字列の開始位置は 0 となり、一番最初の文字がヒットした場合は 0 が返ります。ヒットしなかった場合、FALSE が返却されます。
解説
haystack で指定した文字列中から、needle で指定した文字を検索し、最初に出現する位置を数値で返却します。この関数はstrpos()と概ね同様の動きをしますが、違いは strpos() では大文字と小文字が違う文字として認識されるのに対し、stripos() では大文字小文字は同じ文字として認識されます。
注意: この関数はバイナリデータに対応しています。
警告この関数は論理値FALSE を返す可能性がありますが、FALSE として評価される値を返す可能性もあります。詳細については 論理値のセクションを参照してください。この関数の返り値を調べるには===演算子 を使用してください。
記述サンプル
//PHP 7.4.6で実行
//文字列を指定
$string = "abcdefg";
//検索したい文字を指定して実行
$result = stripos($string, "E");
//結果表示 小文字・大文字を区別しないためヒットする
var_dump($result);
int(4)
/* ----------------------------- */
//文字列を指定
$string = "abcdefg";
//検索したい文字を複数指定して実行
$result = stripos($string, "code");
//結果表示
var_dump($result);
bool(false)
/* ----------------------------- */
//文字列を指定
$string = "abcdefg";
//検索したい文字を指定して実行
$result = stripos($string, "A");
//結果表示 最初の文字にヒットした場合
var_dump($result);
int(0)
//「==」で判定すると正しく判定できないため、かならず「===」を利用する
if($result == false){
echo "{$result}文字目にヒット!(「==」で判定)";
}
//正しく判定されていない
0文字目にヒット!(「==」で判定)bool(false)
//正しく判定されている
if($result === false){
echo "{$result}文字目にヒット!(「===」で判定)";
}
/* ----------------------------- */
//文字列を指定
$string = "abcdefg";
//検索開始位置を指定して実行
$result = stripos($string, "B", 3);
//結果表示 ヒットしない
var_dump($result);
bool(false)
/* ----------------------------- */
//文字列を指定
$string = "abcdefg";
//検索開始位置でマイナスを指定して実行
$result = stripos($string, "B", -3);
//結果表示 ヒットしない
var_dump($result);
bool(false)
/* ----------------------------- */
//マルチバイト文字列を指定
$string = "あいうえおかきくけこ";
//検索したい文字を複数指定して実行
$result = stripos($string, "お");
//結果 マルチバイト文字の場合、結果=文字数とは限らないので注意
var_dump($result);
int(12)
/* ----------------------------- */
//マルチバイト文字列を指定
$string = "あいうえおかきくけこ";
//検索位置を指定して、マルチバイト文字を検索
$result = stripos($string, "い", 2);
//結果 検索位置を指定し通常はヒットしない場合でも、マルチバイト文字は数え方(バイト数)が異なるためヒットする
var_dump($result);
int(3)
参考リンク
・mb_stripos 大文字小文字を区別せず、 文字列の中で指定した文字列が最初に現れる位置を探す・str_ireplace 大文字小文字を区別しない str_replace()
・stristr 大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
・strpos 文字列内の部分文字列が最初に現れる場所を見つける
・strripos 文字列中で、特定の(大文字小文字を区別しない)文字列が最後に現れた位置を探す
・strrpos 文字列中に、ある部分文字列が最後に現れる場所を探す
・substr 文字列の一部分を返す
タグ
検索 大文字 小文字 String 文字列
公式リファレンス
書式
stripos ( string $haystack , mixed $needle [, int $offset = 0 ] ) : int
説明
文字列 haystack の中で needle が最初に現れる位置を探します。
strpos() と異なり、stripos() は大文字小文字を区別しません。
パラメータ
- haystack
- 検索を行う文字列。
- needle
- needle は、 ひとつまたは複数の文字であることに注意しましょう。 needle が文字列でない場合、 数値に変換され、文字の通常の値として扱われます。 この振る舞いは PHP 7.3.0 以降では推奨されないので、 この機能を使用しないことを強く推奨します。 意図した動作に依存する場合、 needle を string に明示的にキャストするか、 明示的に chr() 関数を呼び出すべきでしょう。
- offset
- 指定すると、文字列内での検索開始位置がその位置になります。 負の数を指定すると、文字列の末尾からこの数だけ戻った場所から検索を開始します。
返値
needle が見つかった位置を、 haystack 文字列の先頭 (offset の値とは無関係) からの相対位置で返します。 文字列の開始位置は 0 であり、1 ではないことに注意しましょう。 needle が見つからない場合は FALSE を返します。 警告この関数は論理値FALSE を返す可能性がありますが、FALSE として評価される値を返す可能性もあります。詳細については 論理値のセクションを参照してください。この関数の返り値を調べるには===演算子 を使用してください。
注意
注意: この関数はバイナリデータに対応しています。警告この関数は論理値FALSE を返す可能性がありますが、FALSE として評価される値を返す可能性もあります。詳細については 論理値のセクションを参照してください。この関数の返り値を調べるには===演算子 を使用してください。
更新履歴
バージョン | 説明 |
---|---|
7.3.0 | needle に int を渡すことは非推奨になりました。 |
7.1.0 | 負の offset をサポートするようになりました。 |
サンプル
例1 stripos() の例
$findme = 'a';
$mystring1 = 'xyz';
$mystring2 = 'ABC';
$pos1 = stripos($mystring1, $findme);
$pos2 = stripos($mystring2, $findme);
// いいえ、'a' は明らかに 'xyz' の中には存在しません
if ($pos1 === false) {
echo "The string '$findme' was not found in the string '$mystring1'";
}
// === を使用していることに注意しましょう。単に == としても期待通りに動作
// しません。なぜなら 'a' は 0 番目(最初) の文字だからです。
if ($pos2 !== false) {
echo "We found '$findme' in '$mystring2' at position $pos2";
}
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール