¿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


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.


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


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') ;

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


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 ) );

0

para los últimos 7 caracteres

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

$ newstring: 5409els

para los primeros 7 caracteres

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

$ newstring: 2490slk


-1

últimos 7 caracteres de una cadena:

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.