(PHP 4, PHP 5, PHP 7, PHP 8)
strrpos — Encontra a posição da última ocorrência de uma substring em uma string
Encontra a posição numérica da última ocorrência de
needle
na string haystack
.
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 foi descontinuado 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.
Nota:
Efetivamente, é o mesmo que procurar pela última ocorrência de
needle
antes dos últimosoffset
bytes.
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).
Nota: A posições na string iniciam em 0, e não em 1.
Retorna false
se a string não for encontrada.
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.
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 foi descontinuado.
|
Exemplo #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
$mystring = 'Elephpant';
$pos = strrpos($mystring, "b");
if ($pos === false) { // observe: três sinais de igualdade
// não encontrada
}
?>
Exemplo #2 Pesquisa com deslocamentos
<?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)