strrpos

(PHP 4, PHP 5, PHP 7, PHP 8)

strrposEncontra a posição da última ocorrência de uma substring em uma string

Descrição

strrpos(string $haystack, string $needle, int $offset = 0): int|false

Encontra a posição numérica da última ocorrência de needle na string haystack.

Parâmetros

haystack

A string onde a substring será procurada.

needle

A substring procurada.

Antes do PHP 8.0.0, se needle não for uma string, ela será convertida para um número inteiro e aplicada como o valor ordinal de um caractere. Este comportamento tornou-se defasado a partir do PHP 7.3.0 e depender dele é altamente desaconselhado. Dependendo do comportamento pretendido, o parâmetro needle deve ser explicitamente convertido em string ou uma chamada explícita para chr() deve ser realizada.

offset

Se zero ou positivo, a pesquisa é realizada da esquerda para a direita pulando os primeiros offset bytes de haystack.

Se negativo, a pesquisa inicia a offset bytes da direita ao invés do início de haystack. A pesquisa é realizada da direita para a esquerda, pesquisando pela primeira ocorrência de needle a partir do byte selecionado.

Note:

Efetivamente, é o mesmo que procurar pela última ocorrência de needle antes dos últimos offset bytes.

Valor Retornado

Retorna a posição onde a string procurada existe relativamente ao início da string haystack (independente da direção de busca ou do deslocamenteo).

Note: A posições na string iniciam em 0, e não em 1.

Retorna false se a string não for encontrada.

Warning

Esta função pode retornar o valor booleano false, mas também pode retornar um valor não booleano que pode ser avaliado como false. Leia a seção sobre Booleanos para mais informações. Use o operador === para testar o valor retornado por esta função.

Registro de Alterações

Versão Descrição
8.0.0 O parâmetro needle agora aceita uma string vazia.
8.0.0 Passar int no parâmetro needle não é mais suportado.
7.3.0 Passar um int no parâmetro needle tornou-se defasado.

Exemplos

Example #1 Verificando se uma substring existe em uma string

É fácil se enganar nos valores de retorno para "caracteres encontrados na posição 0" e "caractere não encontrado". Veja como detectar a diferença:

<?php

$pos = strrpos($mystring, "b");
if ($pos === false) { // observe: três sinais de igualdade
    // não encontrada
}

?>

Example #2 Searching with offsets

<?php
$foo = "0123456789a123456789b123456789c";

// Procurando por '0' a partir do byte 0 (a partir do início)
var_dump(strrpos($foo, '0', 0));

// Procurando por '0' a partir do byte 1 (depois do byte 0)
var_dump(strrpos($foo, '0', 1));

// Procurando por '7' a partir do byte 20
var_dump(strrpos($foo, '7', 20));

// Procurando por '7' a partir do byte 28
var_dump(strrpos($foo, '7', 28));

// Procurando por '7' da direita para a esquerda a partir do 5º byte contando do final
var_dump(strrpos($foo, '7', -5));

// Procurando por 'c' da direita para a esquerda a partir do 2º byte contando do final
var_dump(strrpos($foo, 'c', -2));

// Procurando por '9c' da direita para a esquerda a partir do 2º byte condando do final
var_dump(strrpos($foo, '9c', -2));
?>

O exemplo acima produzirá:

int(0)
bool(false)
int(27)
bool(false)
int(17)
bool(false)
int(29)

Veja Também

  • strpos() - Encontra a posição da primeira ocorrência de uma substring em uma string
  • stripos() - Encontra a posição da primeira ocorrência de uma substring em uma string, de forma insensível a maiúsculas/minúsculas
  • strripos() - Encontra a posição da última ocorrência de uma substring em uma string, insensível a miúsculas/minúsculas
  • strrchr() - Encontra a última ocorrência de um caractere em uma string
  • substr() - Retorna parte de uma string