Làm cách nào tôi có thể nhận được 7 ký tự cuối cùng của chuỗi PHP?


278

Làm thế nào tôi có thể lấy về 7 ký tự cuối cùng của chuỗi bên dưới?

Ví dụ:

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

Hiển thị:

The new string is: 5409els


8
Câu hỏi được xác định là một bản sao hoàn toàn không giống với câu hỏi này.
Asaph

13
Thật trớ trêu khi tôi được đưa vào đây khi tìm kiếm Google cho chủ đề này. thở dài
LeonardChallis

5
@Asaph Tôi gọi đây là stack ảnh hưởng. Mọi người thử bất cứ điều gì để đóng các câu hỏi xuống, điều đầu tiên họ sẽ làm là gắn cờ nó thành một bản sao đơn giản chỉ vì mục đích gắn cờ
twigg

5
Nó dễ dàng hơn và nhanh hơn để google vấn đề và tìm một dòng mã trong câu trả lời trong SO hơn là thông qua hướng dẫn.
Engin Yapici 21/2/2015

Câu trả lời:


597

Sử dụng substr()với số âm cho đối số thứ 2.

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

Từ các tài liệu php :

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

Nếu bắt đầu là âm, chuỗi trả về sẽ bắt đầu ở ký tự bắt đầu từ cuối chuỗi.


Nhưng nếu $ Dynamicopes dưới 7 ký tự, $ new chuỗi sẽ trống. (ít nhất là trên PHP 5.2.6)
Scott Chu

Trước tiên, bạn luôn có thể thực hiện kiểm tra với strlen để xem số lượng ký tự lớn hơn hoặc bằng 7.
PBwebD


14

Kết quả an toàn hơn để làm việc với mã ký tự đa nhân, luôn luôn sử dụng mb_substr thay vì chất nền. Ví dụ cho 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

Sẽ tốt hơn nếu có một kiểm tra trước khi nhận được chuỗi.

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

nếu các ký tự lớn hơn thì 7 trả về 7 ký tự cuối cùng khác trả về chuỗi được cung cấp.

hoặc làm điều này nếu bạn cần trả lại tin nhắn hoặc lỗi nếu độ dài nhỏ hơn 7

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

tài liệu nền


Tôi nghĩ rằng phần khác là cần thiết để gửi lại tin nhắn. Một cái gì đó như dữ liệu không hợp lệ được nhập hoặc ..
Neri

1
Đây có lẽ là câu trả lời tốt nhất, điều duy nhất có thể làm cho nó tốt hơn là tham khảo hướng dẫn sử dụng php.
Mark Carpenter Jr

2

Để đơn giản, nếu bạn không muốn gửi tin nhắn, hãy thử điều này

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

0

cho 7 ký tự cuối cùng

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

$ chuỗi mới: 5409els

cho 7 ký tự đầu tiên

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

$ chuỗi mới: 2490slk


-1

7 ký tự cuối cùng của chuỗi:

$ rest = đế ("abcdefghijklmnop", -7); // trả về "jklmnop"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.