Tôi cần lấy ký tự cuối cùng của chuỗi. Giả sử tôi có "người kiểm tra" làm chuỗi đầu vào và tôi muốn kết quả là "s". làm thế nào tôi có thể làm điều đó trong PHP?làm thế nào để có được char cuối cùng của một chuỗi trong PHP?
Trả lời
substr("testers", -1); // returns "s"
Nếu bạn đang sử dụng mã hóa ký tự nhiều byte như UTF-8, hãy sử dụng' mb_substr' (http://php.net/ mb_substr) để thay thế. – Gumbo
rất nhiều cho chất nền của tôi ($ string, strlen ($ string) -1, 1) ;. Có vẻ như tôi đã đi theo con đường LONG! – jeffkee
Bạn chỉ cần các hàm chuỗi nhiều byte nếu chuỗi được đánh giá là chuỗi nhị phân. Aka, khi php không biết mã hóa. Nếu không, các hàm chuỗi không đa byte điển hình sẽ hoạt động tốt. –
substr($string, -1)
Không có hàm PHP nào gọi là "chuỗi con", bạn sẽ gặp lỗi trừ khi bạn đã thực hiện chức năng chuỗi con của riêng mình. Nên là "chất nền". –
ahh bạn làm hỏng toàn bộ trò đùa. +8 bỏ phiếu cho câu trả lời sai trông thật tuyệt vời :) –
duh…, nghĩa là 'substr' của khóa học – knittl
Hoặc bởi direct string access:
$string[strlen($string)-1];
Lưu ý rằng điều này không làm việc cho chuỗi multibyte. Nếu bạn cần phải làm việc với chuỗi multibyte, xem xét sử dụng mb_*
string family of functions.
Tôi thích câu trả lời theo phong cách C này, tôi tự hỏi tại sao điều này chỉ có một vài upvotes này. –
@ValentinMercier: Vì đây là một câu hỏi PHP, không phải C. –
@ValentinMercier ... và _only_ C lập trình viên có một _contest_ cho mã khó hiểu! http://ioccc.org/ – Slashback
Hãy nhớ rằng, nếu bạn có một chuỗi được đọc như một dòng từ một tập tin văn bản bằng cách sử dụng fgets()
chức năng, bạn cần phải sử dụng substr($string, -3, 1)
để bạn có được những thực tế và không phải là một phần của CRLF (Nguồn cấp dòng trả về vận chuyển).
Tôi không nghĩ rằng người hỏi câu hỏi này cần thiết, nhưng đối với tôi, tôi gặp khó khăn khi lấy ký tự cuối cùng từ một chuỗi từ tệp văn bản, vì vậy tôi chắc chắn những người khác sẽ gặp phải vấn đề tương tự.
Tôi không thể để lại nhận xét, nhưng liên quan đến câu trả lời của FastTrack, hãy nhớ rằng dòng kết thúc có thể chỉ là ký tự đơn. Tôi sẽ đề nghị
substr(trim($string), -1)
EDIT:Mã của tôi dưới đây đã được chỉnh sửa bởi một ai đó, làm cho nó không làm những gì tôi chỉ định. Tôi đã khôi phục mã gốc của mình và thay đổi từ ngữ để làm cho nó rõ ràng hơn.
trim
(hoặc rtrim
) sẽ loại bỏ tất cả khoảng trắng, vì vậy nếu bạn cần phải kiểm tra cho một không gian, tab hoặc khoảng trắng khác, bằng tay thay thế kết thúc dòng khác nhau đầu tiên:
$order = array("\r\n", "\n", "\r");
$string = str_replace($order, '', $string);
$lastchar = substr($string, -1);
tôi 'd tư vấn để đi cho giải pháp Gordon vì nó là hơn performant hơn substr():
<?php
$string = 'abcdef';
$repetitions = 10000000;
echo "\n\n";
echo "----------------------------------\n";
echo $repetitions . " repetitions...\n";
echo "----------------------------------\n";
echo "\n\n";
$start = microtime(true);
for($i=0; $i<$repetitions; $i++)
$x = substr($string, -1);
echo "substr() took " . (microtime(true) - $start) . "seconds\n";
$start = microtime(true);
for($i=0; $i<$repetitions; $i++)
$x = $string[strlen($string)-1];
echo "array access took " . (microtime(true) - $start) . "seconds\n";
die();
ra một cái gì đó giống như
----------------------------------
10000000 repetitions...
----------------------------------
substr() took 2.0285921096802seconds
array access took 1.7474739551544seconds
Điều này sẽ là một bình luận về câu trả lời của Gordon. – Goose
Có thể xác nhận điều này. Chuỗi của bạn càng dài thì hiệu số càng lớn. Trong thử nghiệm của tôi với 10 ký tự nền là khoảng 20% chậm hơn – Philipp
Không ngạc nhiên khi substr() có chi phí của một cuộc gọi chức năng và khác là "C như" thao tác chuỗi trực tiếp. BTW Tôi chạy mã này trên PHP 7.1-dev với kết quả: substr() mất 7.090255022049seconds \ truy cập mảng mất 2.3145787715912seconds – RyanNerd
Trong lên và sắp tới PHP 7.1, bạn sẽ có thể làm điều này (Accepted rfc for negative string offsets):
<?php
$silly = 'Mary had a little lamb';
echo $silly[-20];
echo $silly{-6};
echo $silly[-3];
echo $silly[-15];
echo $silly[-13];
echo $silly[-1];
echo $silly[-4];
echo $silly{-10};
echo $silly[-4];
echo $silly[-8];
echo $silly{3};
die();
Tôi sẽ cho bạn đoán sản lượng.
Ngoài ra, tôi bổ sung này để xenonite's đang thực hiện với những kết quả này:
substr() mất 7.0334868431091seconds
truy cập mảng mất 2.3111131191254seconds
truy cập chuỗi trực tiếp mất 1.7971360683441seconds
Cố ý sai chính tả ... – RyanNerd
Tính năng tuyệt vời! – Slowaways
Cảm ơn bạn đã đăng điểm chuẩn! Nếu bất cứ ai quan tâm đến C# điểm chuẩn để làm điều tương tự, [trang này] (http: //cc.davelozinski.com/c-sharp/c-nhanh nhất-way-to-check-last-ký tự-of-a-string) là một đọc tốt. Trực tiếp truy cập vào nhân vật cuối cùng đã thắng. – WorkRelated
Bạn có thể tìm ký tự cuối bằng cách sử dụng nhiều cách php như substr() và mb_substr().
Nếu bạn đang sử dụng bảng mã ký tự nhiều byte như UTF-8, sử dụng mb_substr thay vì substr
Ở đây tôi có thể cho bạn thấy cả hai ví dụ:
<?php
echo substr("testers", -1);
echo mb_substr("testers", -1);
?>
Một chuỗi bằng các ngôn ngữ khác nhau bao gồm C sắc nét và PHP cũng được coi là một mảng các ký tự.
Biết rằng về mặt lý thuyết hoạt động mảng nên nhanh hơn so với những chuỗi bạn có thể làm,
$foo = "bar";
$lastChar = strlen($foo) -1;
echo $foo[$lastChar];
$firstChar = 0;
echo $foo[$firstChar];
Tuy nhiên, chức năng tiêu chuẩn như mảng
count();
sẽ không hoạt động trên một chuỗi.
Siemano, được các tập tin chỉ php từ thư mục được chọn:
$dir = '/home/zetdoa/ftp/domeny/MY_DOMAIN/projekty/project';
$files = scandir($dir, 1);
foreach($files as $file){
$n = substr($file, -3);
if($n == 'php'){
echo $file.'<br />';
}
}
- 1. Làm cách nào để có được 7 ký tự cuối cùng của một chuỗi PHP?
- 2. StringBuilder: làm thế nào để có được chuỗi cuối cùng?
- 3. Làm thế nào để có được ngày cuối cùng của tháng bằng cách sử dụng php
- 4. Làm thế nào để tách một chuỗi và nhận được kết quả cuối cùng trong jQuery?
- 5. Làm thế nào để có được lỗi cuối cùng (WSAGetLastError)?
- 6. Làm thế nào để có được hồ sơ cuối cùng
- 7. Làm thế nào để có được ngày cuối cùng của một tháng cụ thể với JodaTime?
- 8. Regex: làm thế nào để phù hợp với dấu chấm cuối cùng trong một chuỗi
- 9. Di char đầu tiên và cuối cùng từ chuỗi
- 10. Làm thế nào để thay thế sự xuất hiện cuối cùng của chuỗi con trong ruby?
- 11. PHP Làm thế nào để loại bỏ phần cuối cùng của một con đường
- 12. Làm thế nào để có được chiều dài của char **?
- 13. Làm thế nào để có được sự xuất hiện đầu tiên của một char trong xâu
- 14. Thay thế ký tự cuối cùng trong một chuỗi
- 15. Làm thế nào để có được giá trị của autoincrement của hàng cuối cùng tại chèn
- 16. Python Di char cuối cùng từ chuỗi và gửi lại
- 17. rreplace - Làm thế nào để thay thế sự xuất hiện cuối cùng của một biểu thức trong một chuỗi?
- 18. làm thế nào để cắt cuối n byte của một chuỗi trong bash chuỗi choping?
- 19. Làm thế nào để có được tài liệu được tạo cuối cùng trong couchdb?
- 20. Cách hiển thị char cuối cùng của NSString *
- 21. di chuyển chuỗi C: nhận từ cuối cùng của chuỗi
- 22. Trong PHP, có cách nào dễ dàng để có được ngày đầu tiên và cuối cùng của một tháng không?
- 23. Làm thế nào tôi có thể nhận được ký tự cuối cùng của một chuỗi sử dụng JavaScript
- 24. trong javascript, làm thế nào tôi có thể nhận được ký tự cuối cùng trong một chuỗi
- 25. Làm thế nào để có được thứ sáu cuối cùng của tháng (s) sử dụng .NET
- 26. Làm thế nào để thay thế xuất hiện cuối cùng của ký tự trong một chuỗi sử dụng javascript
- 27. Làm thế nào để có được char ép từ System.Windows.Input.KeyEventArgs?
- 28. Trim cuối cùng "" delimiter của một chuỗi trong VB.NET
- 29. Làm thế nào để có được cùng một giá trị từ hai mảng trong PHP?
- 30. Làm cách nào để có được màu sắc của hình cuối cùng trong matplotlib?
Xem câu trả lời của tôi dưới đây để biết tính năng này trong 7.1 của PHP. – RyanNerd
Bạn có thể tìm thấy ['s ($ str) -> end()'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L192) hữu ích, như được tìm thấy trong [thư viện độc lập này] (https://github.com/delight-im/PHP-Str). – caw