Как я могу получить последние 7 символов строки PHP?

279

Как бы я взял последние 7 символов строки ниже?

Например:

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

Который будет отображать:

The new string is: 5409els
Дейв
источник
8
Вопрос идентифицирована как DUP не совсем такой же , как этот вопрос вообще.
Асаф
13
Ирония в том, что я попал сюда при поиске в Google по этой теме. вздох
Леонард Чаллис
5
@Asaph Я называю это влиянием стека. Люди пытаются что-то закрыть, чтобы сперва задавать вопросы. Сначала они
помечают
5
Намного проще и быстрее найти проблему и найти строку кода в ответе в SO, чем изучать руководство.
Энгин Япичи

Ответы:

598

Используйте substr()с отрицательным числом для второго аргумента.

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

Из документации php :

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

Если start отрицательное, возвращаемая строка будет начинаться с начального символа с конца строки.

Асаф
источник
Но если $ dynamicstring меньше 7 символов, $ newstring будет пустым. (по крайней мере, на PHP 5.2.6)
Скотт Чу
Вы всегда можете сначала выполнить проверку с помощью strlen, чтобы увидеть, является ли количество символов больше или равно 7.
PBwebD
73

хм .. как это?

$newstring = substr($dynamicstring, -7);
Виталий Муминов
источник
6
ты был быстрее :)
милковский
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') ;
MERT DOĞAN
источник
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 ) );
mariovials
источник
0

за последние 7 символов

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

$ newstring: 5409els

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

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

$ newstring: 2490slk

developper
источник
-1

последние 7 символов строки:

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

Keerthi
источник