PHP.nl

strrpos

strrpos

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

 **strrpos** string $haystack string $needle int $offset

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

haystackThe string to search in.

needleThe string to search for.

offset If zero or positive, the search is performed left to right skipping the first bytes of the . offset``haystack

   If negative, the search starts  bytes from
   the right instead of from the beginning of .
   The search is performed right to left, searching for the first
   occurrence of  from the selected byte.
   
  `offset``haystack``needle`> **Opmerking:** > This is effectively looking for the last occurrence of
      at or before the last
      bytes.
    `needle``offset`

Returns the position where the needle exists relative to the beginning of the string (independent of search direction or offset).

haystack> Opmerking: > String positions start at 0, and not 1.

Returns false if the needle was not found.

  • If is greater than the length of , a will be thrown. offset``haystack``ValueError

    Voorbeeld: 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
$mystring = 'Elephpant';

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

?>

Voorbeeld: Searching with offsets

<?php
$foo = "0123456789a123456789b123456789c";

// Looking for '0' from the 0th byte (from the beginning)
var_dump(strrpos($foo, '0', 0));

// Looking for '0' from the 1st byte (after byte "0")
var_dump(strrpos($foo, '0', 1));

// Looking for '7' from the 21th byte (after byte 20)
var_dump(strrpos($foo, '7', 20));

// Looking for '7' from the 29th byte (after byte 28)
var_dump(strrpos($foo, '7', 28));

// Looking for '7' right to left from the 5th byte from the end
var_dump(strrpos($foo, '7', -5));

// Looking for 'c' right to left from the 2nd byte from the end
var_dump(strrpos($foo, 'c', -2));

// Looking for '9c' right to left from the 2nd byte from the end
var_dump(strrpos($foo, '9c', -2));
?>
int(0)
bool(false)
int(27)
bool(false)
int(17)
bool(false)
int(29)

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