Come posso ottenere gli ultimi 7 caratteri di una stringa PHP?


278

Come farei per afferrare gli ultimi 7 caratteri della stringa qui sotto?

Per esempio:

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

Che mostrerebbe:

The new string is: 5409els


8
La domanda identificata come duplex non è affatto la stessa di questa domanda.
Asaf,

13
È ironico che io sia preso qui quando cerco su Google questo argomento. sospiro
LeonardChallis,

5
@Asaph Io chiamo questo l'effetto dello stack. Le persone provano qualsiasi cosa per chiudere le domande, la prima cosa che faranno è contrassegnarlo come un duplicato semplicemente per il gusto di contrassegnarlo
twigg

5
È molto più facile e veloce cercare su Google il problema e trovare una riga di codice nella risposta in SO piuttosto che consultare il manuale.
Engin Yapici,

Risposte:


597

Utilizzare substr()con un numero negativo per il secondo argomento.

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

Dai documenti php :

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

Se start è negativo, la stringa restituita inizierà dal carattere iniziale dalla fine della stringa.


Ma se $ dynamicstring è inferiore a 7 caratteri, $ newstring sarà vuoto. (almeno su PHP 5.2.6)
Scott Chu,

Puoi sempre fare prima un controllo con strlen per vedere se il numero di caratteri è maggiore o uguale a 7.
PBwebD


14

Risultati più sicuri per l'utilizzo di codici carattere multibyte, in ogni caso utilizzare mb_substr invece substr. Esempio per 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

Sarebbe meglio avere un controllo prima di ottenere la stringa.

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

se i caratteri sono maggiori, 7 restituiscono gli ultimi 7 caratteri, altrimenti restituisce la stringa fornita.

oppure farlo se è necessario restituire un messaggio o un errore se la lunghezza è inferiore a 7

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

documentazione substr


Penso che l'altra parte sia necessaria per restituire un messaggio. È stato inserito qualcosa di simile a dati non validi o ...
Neri

1
Questa è probabilmente la risposta migliore, l'unica cosa che potrebbe renderlo migliore è un riferimento al manuale di php.
Mark Carpenter Jr

2

Per semplicità, se non si desidera inviare un messaggio, provare questo

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

0

per gli ultimi 7 caratteri

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

$ newstring: 5409els

per i primi 7 caratteri

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

$ newstring: 2490slk


-1

ultimi 7 caratteri di una stringa:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.