我需要得到一個字符串的最後一個字符。 假設我有「測試者」作爲輸入字符串,我希望結果是「s」。我怎麼能在PHP中做到這一點?如何獲取PHP中最後一個字符串的字符?
回答
substr("testers", -1); // returns "s"
substr($string, -1)
沒有PHP函數稱爲「子字符串」,除非您創建了自己的子字符串函數,否則將會出現錯誤。應該是「substr」。 – 2010-04-21 09:52:55
啊你破壞了整個玩笑。 +8投票的錯誤答案看起來只是驚人的:) – 2010-04-21 09:56:22
嗯......,我的意思是'substr'當然 – knittl 2010-04-21 10:12:20
或者通過direct string access:
$string[strlen($string)-1];
注意,這不適用於多字節字符串工作。如果您需要多字節字符串的工作,考慮使用mb_*
string family of functions.
我喜歡這個C風格的答案,我想知道爲什麼這隻有這幾個upvotes。 – 2014-06-19 16:04:32
@ValentinMercier:因爲這是一個PHP的問題,而不是C. – 2014-07-19 19:28:18
@ValentinMercier ...和_只有C程序員有一個容易混淆的代碼! http://ioccc.org/ – Slashback 2015-11-08 02:49:34
記住,如果你有這被解讀爲使用fgets()
功能的文本文件中的行的字符串,你需要使用substr($string, -3, 1)
使您獲得實際字符,而不是CRLF(回車換行)的一部分。
我不認爲問這個問題的人需要這個,但對我而言,我無法從文本文件中獲取字符串中的最後一個字符,所以我確信其他人會遇到類似的問題。
我不能留下評論,但對於FastTrack的回答,還請記住,行尾可能只有單個字符。我建議
substr(trim($string), -1)
編輯:我下面的代碼是由人編輯,使它不能做什麼,我指示。我已經恢復了我的原始代碼並更改了措辭,使其更加清晰。
trim
(或rtrim
)將刪除所有空白,所以如果你需要檢查是否有空格,製表符或其他空白,首先手動更換各種行結尾:
$order = array("\r\n", "\n", "\r");
$string = str_replace($order, '', $string);
$lastchar = substr($string, -1);
我倒是勸去戈登的解決方案,因爲它比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();
輸出類似
----------------------------------
10000000 repetitions...
----------------------------------
substr() took 2.0285921096802seconds
array access took 1.7474739551544seconds
在和未來的PHP 7.1,你將能夠做到這一點(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();
我將讓你猜輸出。
另外,我已將此添加到與這些結果xenonite's性能的代碼:)
SUBSTR(花7.0334868431091秒
數組訪問了2.3111131191254秒
直接串訪問耗時1。7971360683441seconds
故意拼寫錯誤... – RyanNerd 2016-03-12 00:57:35
真棒功能! – Slowaways 2016-11-06 18:01:17
感謝您發佈基準測試!如果有人對C#基準測試做同樣的事情感興趣,[本頁](http://cc.davelozinski。com/c-sharp/c-fast-way-check-last-character-of-a-string)是一個很好的閱讀。直接訪問最後的角色贏了。 – WorkRelated 2017-06-07 01:28:57
您可以使用PHP許多方面就像substr()和mb_substr()找到最後一個字符。
如果您在使用多字節字符編碼如UTF-8,使用mb_substr代替SUBSTR
在這裏,我可以告訴你兩個例子:
<?php
echo substr("testers", -1);
echo mb_substr("testers", -1);
?>
不同語言的字符串,包括C sharp和PHP也被認爲是一組字符。
知道,在理論上數組操作應該比那些字符串你可以做的更快,
$foo = "bar";
$lastChar = strlen($foo) -1;
echo $foo[$lastChar];
$firstChar = 0;
echo $foo[$firstChar];
然而,像
count();
標準陣列功能將不會在一根繩子上的工作。
Siemano,從選定的目錄只得到PHP文件:
$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. 如何獲取C++中字符串的最後一個字符
- 2. 如何獲取PHP字符串的最後7個字符?
- 3. 如何獲取字符串的最後一個字符?
- 4. 獲取字符串中的最後一個子字符串?
- 5. 在字符'?'之後從字符串中獲取最後一個字符串
- 6. 獲取Prolog中字符串的最後一個字符
- 7. 從變量中獲取字符串的最後一個字符
- 8. C++獲取字符串中的最後一個字符
- 9. 如何在PHP中獲取字符串後的字符串?
- 10. objective-c獲取一個字符串的最後2個字符?
- 11. 如何獲取Golang字符串的最後X個字符?
- 12. 如何獲得字符串的最後一個字符,XSLT
- 13. 從阿拉伯字符串獲取最後一個字母Php
- 14. 獲取匹配字符串的最後一個字符
- 15. 獲取字符串中最後一個子串索引後的字符
- 16. PHP - 如何獲取URL字符串的最後一段
- 17. 獲取一個字符串(JavaScript)的最後一個數字
- 18. 獲取FreeMarker中字符串的最後四個字符
- 19. 獲取字符串中的最後5個字符
- 20. 從python中的字符串中提取最後一個字符?
- 21. 如何獲取字符串的最後和第一個特殊字符?
- 22. 如何使用Excel函數獲取字符串的最後一個字符?
- 23. 如何匹配TSQL中字符串的最後一個字符?
- 24. Java:如何替換字符串中的最後一個字符
- 25. 如何使用C#獲取字符串中子字符串的最後一個字符位置?
- 26. 字符串的第一個字符和最後一個字符
- 27. 在Excel中提取字符串的最後一個字符
- 28. 如何獲取字符串值的最後一個索引
- 29. 如何獲取字符串的最後一個值?
- 30. 如何獲取「。」之前的最後一個字符串。
見我的回答如下在PHP 7.1這一功能。 – RyanNerd 2016-03-12 01:04:58
您可能會發現['s($ str) - > end()'](https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L192)有幫助,因爲在[這個獨立的庫]中找到(https://github.com/delight-im/PHP-Str)。 – caw 2016-07-26 23:43:32