strrpos

Find the position of the last occurrence of a substring in a string

&reftitle.description; `int` `strrpos` `string` `haystack` `string` `needle` `int` `offset` 0

Find the numeric position of the last occurrence of `needle` in the `haystack` string.

&reftitle.parameters;

`haystack`

- The string to search in.

`needle`

- If `needle` is not a string, it is converted to an integer and applied as the ordinal value of a character.

`offset`

- If specified, search will start this number of characters counted from the beginning of the string. If the value is negative, search will instead start from that many characters from the end of the string, searching backwards.

&reftitle.returnvalues;

Returns the position where the needle exists relative to the beginnning of the `haystack` string (independent of search direction or offset). Also note that string positions start at 0, and not 1.

Returns &false; if the needle was not found.

&return.falseproblem;
&reftitle.changelog;

&Version; | &Description;
5.0.0 | The `needle` may now be a string of more than one character.
5.0.0 | The `offset` parameter was introduced.

&reftitle.examples;

### Checking if a needle is in the haystack

It is easy to mistake the return values for "character found at position 0" and "character not found". Here's how to detect the difference:

    <?php

    $pos = strrpos($mystring, "b");
    if ($pos === false) { // note: three equal signs
        // not found...
    }

    ?>

### Searching with offsets

    <?php
    $foo = "0123456789a123456789b123456789c";

    var_dump(strrpos($foo, '7', -5));  // Starts looking backwards five positions
                                       // from the end. Result: int(17)

    var_dump(strrpos($foo, '7', 20));  // Starts searching 20 positions into the
                                       // string. Result: int(27)

    var_dump(strrpos($foo, '7', 28));  // Result: bool(false)
    ?>

&reftitle.seealso;

- `strpos`
- `stripos`
- `strripos`
- `strrchr`
- `substr`