Як я можу отримати останні 7 символів рядка PHP?


278

Як би я міг захопити останні 7 символів рядка нижче?

Наприклад:

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

Що б відображало:

The new string is: 5409els


8
Питання ідентифікована як DUP не зовсім такий же , як це питання взагалі.
Асаф

13
Іронічно, що мене тут шукають під час пошуку цієї теми в Google. зітхання
ЛеонардЧалліс

5
@Asaph Я називаю це впливом на стек. Люди намагаються все, щоб закрити питання, перше, що вони зроблять, - це позначити його як копію просто заради позначення
twigg

5
Набагато простіше і швидше проглянути проблему в Google і знайти рядок коду у відповіді в ТА, ніж переглядати посібник.
Енґін Япічі

Відповіді:


597

Використовуйте substr()з від’ємним числом для 2-го аргументу.

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

З Документів PHP :

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

Якщо старт негативний, повернута рядок починається з символу start'th з кінця рядка.


Але якщо $ dynamicstring менше 7 символів, $ newstring буде порожнім. (принаймні на PHP 5.2.6)
Скотт Чу

Ви завжди можете перевірити спочатку strlen, щоб побачити, чи кількість символів більша або дорівнює 7.
PBwebD


14

Більш безпечні результати роботи з багатобайтовими кодами символів, завжди використовуйте mb_substr замість substr. Приклад для 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

Було б краще пройти чек, перш ніж отримати рядок.

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

якщо символів більше, ніж 7 повернути останні 7 символів, ще повернути наданий рядок.

або зробіть це, якщо вам потрібно повернути повідомлення або помилку, якщо довжина менше 7

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

субстраційна документація


Я думаю, що інша частина потрібна, щоб повернути повідомлення. Щось на зразок недійсних даних, введених або ..
Нері

1
Це, мабуть, найкраща відповідь. Єдине, що може зробити його кращим - це посилання на посібник із php.
Марк Карпентер молодший

2

Для простоти, якщо ви не хочете надсилати повідомлення, спробуйте це

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

0

за останні 7 символів

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

$ newstring: 5409els

для перших 7 символів

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

$ newstring: 2490slk


-1

останні 7 символів рядка:

$ rest = substr ("abcdefghijklmnop", -7); // повертає "jklmnop"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.