Jak mogę uzyskać ostatnie 7 znaków ciągu PHP?

278

Jak miałbym zająć się chwytaniem ostatnich 7 znaków ciągu poniżej?

Na przykład:

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

Które wyświetliby:

The new string is: 5409els
Dave
źródło
8
Pytanie zidentyfikowany jako dup naprawdę nie jest taka sama jak to pytanie w ogóle.
Asaph
13
To ironiczne, że jestem tu przy wyszukiwaniu tego tematu w Google. westchnienie
LeonardChallis
5
@Asaph Nazywam to wpływ na stos. Ludzie próbują wszystkiego, aby zamknąć pytania, pierwszą rzeczą, którą zrobią, jest oznaczenie go jako
dupla
5
O wiele łatwiej i szybciej jest znaleźć w Google problem i znaleźć wiersz kodu w odpowiedzi w SO, niż przeglądanie instrukcji.
Engin Yapici

Odpowiedzi:

597

Użyj substr()z liczbą ujemną dla drugiego argumentu.

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

Z dokumentów php :

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

Jeśli start jest ujemny, zwrócony ciąg rozpocznie się od początkowego znaku od końca łańcucha.

Asaf
źródło
Ale jeśli $ dynamicstring ma mniej niż 7 znaków, $ newstring będzie pusty. (przynajmniej w PHP 5.2.6)
Scott Chu
Zawsze możesz najpierw sprawdzić strlen, aby sprawdzić, czy liczba znaków jest większa lub równa 7.
PBwebD
73

hmm ... jak to?

$newstring = substr($dynamicstring, -7);
Witalij Muminow
źródło
6
byłeś szybszy :)
milkovsky
14

Bezpieczniejsze wyniki pracy z wielobajtowymi kodami znaków, zawsze używaj mb_substr zamiast substr. Przykład dla 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
źródło
11

Lepiej byłoby sprawdzić przed otrzymaniem łańcucha.

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

jeśli znaki są większe niż 7, zwróć 7 ostatnich znaków, w przeciwnym razie zwróć podany ciąg.

lub zrób to, jeśli musisz zwrócić komunikat lub błąd, jeśli długość jest mniejsza niż 7

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

dokumentacja podłoża

Abdul Manan
źródło
Myślę, że do wysłania wiadomości potrzebna jest inna część. Wprowadzono coś takiego jak nieprawidłowe dane lub ...
Neri
1
Jest to prawdopodobnie najlepsza odpowiedź, jedyną rzeczą, która może ją poprawić, jest odwołanie do instrukcji php.
Mark Carpenter Jr
2

Dla uproszczenia, jeśli nie chcesz wysyłać wiadomości, spróbuj tego

$new_string = substr( $dynamicstring, -min( strlen( $dynamicstring ), 7 ) );
mariovials
źródło
0

dla ostatnich 7 znaków

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

$ newstring: 5409els

dla pierwszych 7 znaków

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

$ newstring: 2490slk

deweloper
źródło
-1

ostatnie 7 znaków ciągu:

$ rest = substr ("abcdefghijklmnop", -7); // zwraca „jklmnop”

keerthi
źródło