如何获得PHP中的string的最后一个字符?

我需要得到一个string的最后一个字符。 说我有“testing者”作为inputstring,我想结果是“S”。 我怎么能在PHP中做到这一点?

 substr("testers", -1); // returns "s" 
 substr($string, -1) 

或者通过直接string访问 :

 $string[strlen($string)-1]; 

请注意,这不适用于多字节string。 如果您需要使用多字节string,请考虑使用mb_*string系列函数。

我不能留下意见,但是对于FastTrack的回答,还请记住,行尾可能只有单个字符。 我会build议

 substr(trim($string), -1) 

编辑: 我的代码下面是由某人编辑,使其不做我所表明的。 我已经恢复了我原来的代码,并改变了措辞,使之更加清晰。

trim (或rtrim )将删除所有的空白,所以如果你确实需要检查一个空格,制表符或其他空格,首先手动replace各种行尾:

 $order = array("\r\n", "\n", "\r"); $string = str_replace($order, '', $string); $lastchar = substr($string, -1); 

在即将到来的PHP 7.1中,你将能够做到这一点( 接受rfc为负的string偏移 ):

 <?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(); 

我会让你猜测输出。

另外,我将这个结果添加到了氙矿的性能代码中:

substr()花了7.0334868431091秒

数组访问花了2.3111131191254秒

直接string访问耗时1.7971360683441秒

我build议去Gordon的解决scheme,因为它比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 

请记住,如果你使用fgets()函数从文本文件中读取了一行string,则需要使用substr($string, -3, 1)以便获得实际的字符而不是CRLF(回车换行)。

我不认为问这个问题的人需要这个,但是对于我来说,我无法从文本文件中得到最后一个字符,所以我相信其他人也会遇到类似的问题。

你可以用许多方法像substr()和mb_substr()来find最后一个字符。

如果您使用多字节字符编码(如UTF-8),请使用mb_substr而不是substr

在这里,我可以向你展示两个例子:

 <?php echo substr("testers", -1); echo mb_substr("testers", -1); ?> 

现场演示

包括C sharp和PHP在内的不同语言的string也被认为是一个字符数组。

知道理论上arrays操作应该比string操作更快,

 $foo = "bar"; $lastChar = strlen($foo) -1; echo $foo[$lastChar]; $firstChar = 0; echo $foo[$firstChar]; 

但是,标准的数组函数就像

 count(); 

将不会在一个string上工作。

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 />'; } }