Como posso obter os últimos 7 caracteres de uma string PHP?

278

Como eu pegaria os últimos 7 caracteres da string abaixo?

Por exemplo:

$dynamicstring = "2490slkj409slk5409els";
$newstring = some_function($dynamicstring);
echo "The new string is: " . $newstring;

Qual seria exibido:

The new string is: 5409els
Dave
fonte
8
A pergunta identificada como um dup não é realmente a mesma que essa pergunta.
Asaph
13
É irônico que eu seja levado aqui ao pesquisar no Google por esse tópico. suspirar
LeonardChallis
5
@ Asaph eu chamo isso de afetar a pilha. As pessoas tentam qualquer coisa para questões fechar, a primeira coisa que vai fazer é marcá-lo como um dup simplesmente por uma questão de sinalizar que
twigg
5
É muito mais fácil e rápido pesquisar no Google o problema e encontrar uma linha de código na resposta no SO do que ler o manual.
Engin Yapici

Respostas:

597

Use substr()com um número negativo para o segundo argumento.

$newstring = substr($dynamicstring, -7);

Nos documentos php :

string substr ( string $string , int $start [, int $length ] )

Se start for negativo, a string retornada começará no caractere start'th do final da string.

Asaph
fonte
Mas se $ dynamicstring tiver menos de 7 caracteres, $ newstring estará vazio. (pelo menos no PHP 5.2.6)
Scott Chu
Você sempre pode fazer uma verificação com strlen primeiro para ver se o número de caracteres é maior ou igual a 7.
PBwebD
73

umh .. assim?

$newstring = substr($dynamicstring, -7);
Vitaly Muminov
fonte
6
você era mais rápido :)
milkovsky
14

Resultados mais seguros para trabalhar com códigos de caracteres multibyte, sempre use mb_substr em vez de substr. Exemplo para utf-8:

$str = 'Ne zaman seni düşünsem';
echo substr( $str, -7 ) . ' <strong>is not equal to</strong> ' .
  mb_substr( $str, -7, null, 'UTF-8') ;
MERT DOĞAN
fonte
11

Seria melhor fazer uma verificação antes de obter a string.

$newstring = substr($dynamicstring, -7);

se os caracteres forem maiores, 7 retornam os últimos 7 caracteres e retornam a string fornecida.

ou faça isso se precisar retornar mensagem ou erro se o comprimento for menor que 7

$newstring = (strlen($dynamicstring)>7)?substr($dynamicstring, -7):"message";

documentação substr

Abdul Manan
fonte
Acho que a outra parte é necessária para devolver uma mensagem. Algo como dados inválidos entrou ou ..
Neri
1
Esta é provavelmente a melhor resposta, a única coisa que pode torná-lo melhor é uma referência ao manual do php.
Mark Carpenter Jr
2

Para simplificar, se você não deseja enviar uma mensagem, tente este

$new_string = substr( $dynamicstring, -min( strlen( $dynamicstring ), 7 ) );
mariovials
fonte
0

para os últimos 7 caracteres

$newstring = substr($dynamicstring, -7);

$ newstring: 5409els

para os primeiros 7 caracteres

$newstring = substr($dynamicstring, 0, 7);

$ newstring: 2490slk

revelador
fonte
-1

últimos 7 caracteres de uma sequência:

$ rest = substr ("abcdefghijklmnop", -7); // retorna "jklmnop"

keerthi
fonte