関数・クラス解説

strpos

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

文字列内の部分文字列が最初に現れる場所を見つける

公式リファレンス

書式

strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) : int

説明

文字列 haystack の中で、 needle が最初に現れる位置を探します。

パラメータ

haystack
検索を行う文字列。
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 === の使用

$mystring = 'abc'; $findme   = 'a'; $pos = strpos($mystring, $findme); // === を使用していることに注目しましょう。単純に == を使ったのでは // 期待通りに動作しません。なぜなら 'a' が 0 番目 (最初) の文字だからです。 if ($pos === false) {     echo "文字列 '$findme' は、文字列 '$mystring' の中で見つかりませんでした"; } else {     echo "文字列 '$findme' が文字列 '$mystring' の中で見つかりました";     echo " 見つかった位置は $pos です"; }

例2 !== の使用

$mystring = 'abc'; $findme   = 'a'; $pos = strpos($mystring, $findme); // !== 演算子も使用可能です。ここで != を使っても期待通りに動作しません。 // なぜなら 'a' が 0 番目の文字だからです。(0 != false) を評価すると // false になってしまいます。 if ($pos !== false) {      echo "文字列 '$findme' が文字列 '$mystring' の中で見つかりました";          echo " 見つかった位置は $pos です"; } else {      echo "文字列 '$findme' は、文字列 '$mystring' の中で見つかりませんでした"; }

例3 オフセットの使用

// オフセット以前の内容を無視して文字を探すこともできます。 $newstring = 'abcdef abcdef'; $pos = strpos($newstring, 'a', 1); // $pos は 0 ではなく 7 となります。

参考

  • stripos() - 大文字小文字を区別せずに文字列が最初に現れる位置を探す
  • strrpos() - 文字列中に、ある部分文字列が最後に現れる場所を探す
  • strripos() - 文字列中で、特定の(大文字小文字を区別しない)文字列が最後に現れた位置を探す
  • strstr() - 文字列が最初に現れる位置を見つける
  • strpbrk() - 文字列の中から任意の文字を探す
  • substr() - 文字列の一部分を返す
  • 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用の拡張モジュール