# strrpos

(PHP 4, PHP 5, PHP 7)

strrpos — 计算指定字符串在目标字符串中最后一次出现的位置

### 说明

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

返回字符串 `haystack` 中 `needle` 最后一次出现的数字位置。注意 PHP4 中，needle 只能为单个字符。如果 needle 被指定为一个字符串，那么将仅使用第一个字符。

### 参数

`haystack`

  在此字符串中进行查找。

`needle`

  如果 `needle`不是一个字符串，它将被转换为整型并被视为字符的顺序值。

`offset`

  或许会查找字符串中任意长度的子字符串。负数值将导致查找在字符串结尾处开始的计数位置处结束。

### 返回值

返回 needle 存在的位置。如果没有找到，返回 `FALSE`。 Also note that string positions start at 0, and not 1.

Returns `FALSE` if the needle was not found.

Warning

此函数可能返回布尔值 `FALSE`，但也可能返回等同于 `FALSE` 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

### 更新日志

版本 | 说明
--- | ---
5.0.0 | 参数 `needle` 可以是一个多字符的字符串。
5.0.0 | 引入 `offset` 参数。

### 范例

Example #1 检查字串是否存在

很容易将“在位置 0 处找到”和“未发现字符串”这两种情况搞错。这是检测区别的办法：

    <?php

    $pos = strrpos($mystring, "b");
    if ($pos === false) { // 注意: 三个等号
        // 未发现...
    }

    ?>

Example #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() - 返回字符串的子串