¿Cómo puedo obtener los últimos 7 caracteres de una cadena PHP?

278

¿Cómo haría para agarrar los últimos 7 caracteres de la cadena a continuación?

Por ejemplo:

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

Que mostraría:

The new string is: 5409els
Dave
fuente
8
La pregunta identificada como dup no es realmente la misma que esta pregunta.
Asaph
13
Es irónico que me lleven aquí cuando busco este tema en Google. suspiro
LeonardChallis
55
@Asaph Yo llamo a esto el efecto de pila. La gente intenta cualquier cosa para cerrar las preguntas, lo primero que harán es
marcarlo
55
Es mucho más fácil y rápido buscar en Google el problema y encontrar una línea de código en la respuesta en SO que en el manual.
Engin Yapici

Respuestas:

597

Use substr()con un número negativo para el segundo argumento.

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

De los documentos php :

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

Si start es negativo, la cadena devuelta comenzará en el carácter inicial desde el final de la cadena.

Asaph
fuente
Pero si $ dynamicstring tiene menos de 7 caracteres, $ newstring estará vacío. (al menos en PHP 5.2.6)
Scott Chu
Siempre puede hacer una verificación con strlen primero para ver si el número de caracteres es mayor o igual a 7.
PBwebD
73

umh .. asi?

$newstring = substr($dynamicstring, -7);
Vitaly Muminov
fuente
66
eras más rápido :)
milkovsky
14

Resultados más seguros para trabajar con códigos de caracteres multibyte, siempre use mb_substr en lugar de substr. Ejemplo 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
fuente
11

Sería mejor tener un cheque antes de obtener la cadena.

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

si los caracteres son mayores, entonces 7 devuelven los últimos 7 caracteres; de lo contrario, devuelve la cadena proporcionada.

o haga esto si necesita devolver un mensaje o error si la longitud es inferior a 7

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

documentación substr

Abdul Manan
fuente
Creo que la otra parte es necesaria para devolver un mensaje. Algo así como datos no válidos ingresados ​​o ...
Neri
1
Esta es probablemente la mejor respuesta, lo único que podría mejorarlo es una referencia al manual de php.
Mark Carpenter Jr
2

Para simplificar, si no desea enviar un mensaje, intente esto

$new_string = substr( $dynamicstring, -min( strlen( $dynamicstring ), 7 ) );
marioviales
fuente
0

para los últimos 7 caracteres

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

$ newstring: 5409els

para los primeros 7 caracteres

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

$ newstring: 2490slk

desarrollador
fuente
-1

últimos 7 caracteres de una cadena:

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

keerthi
fuente