文字列中に、ある部分文字列が最後に現れる場所を探す

# strrpos

(PHP 4, PHP 5, PHP 7)

strrpos — 文字列中に、ある部分文字列が最後に現れる場所を探す

### 説明

strrpos ( string `$haystack` , string `$needle` [, int `$offset` = 0 ] ) : int

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

### パラメータ

`haystack`

  検索を行う文字列。

`needle`

  `needle` が文字列でない場合は、 それを整数に変換し、その番号に対応する文字として扱います。

`offset`

  指定すると、文字列の開始位置からこの文字数だけ進んだところで検索を中止します。 負の値を指定すると、文字列の最後からこの文字数だけ戻ったところから逆向きに検索を開始します。

### 返り値

needle が見つかった位置を、 `haystack` 文字列の先頭 (offset の値とは無関係) からの相対位置で返します。 文字列の開始位置は 0 であり、1 ではないことに注意しましょう。

needle が見つからない場合は `FALSE` を返します。

### 変更履歴

バージョン | 説明
--- | ---
5.0.0 | `needle` は 1 文字以上の文字列を指定可能です。

### 例

例1 needle が haystack の中にあるかどうかの確認

"位置 0 に文字が見つかった" と "文字が見つからなかった" 場合の返り値は混同しやすいです。この違いを見分ける方法を以下に示します。

`<?php
$pos = strrpos($mystring, "b");
if ($pos === false) { // 注意: 等号が 3 つ並んでいます
// 見つからない...
}
?>`

例2 オフセットつきの検索

`<?php
$foo = "0123456789a123456789b123456789c";
var_dump(strrpos($foo, '7', -5)); // 末尾から 5 文字戻ったところから検索を始めます
// 結果: int(17)
var_dump(strrpos($foo, '7', 20)); // 文字列の 20 文字目から検索を始めます
// 結果: int(27)
var_dump(strrpos($foo, '7', 28)); // 結果: bool(false)
?>`

### 参考

- strpos() - 文字列内の部分文字列が最初に現れる場所を見つける
- stripos() - 大文字小文字を区別せずに文字列が最初に現れる位置を探す
- strripos() - 文字列中で、特定の(大文字小文字を区別しない)文字列が最後に現れた位置を探す
- strrchr() - 文字列中に文字が最後に現れる場所を取得する
- substr() - 文字列の一部分を返す