如何获得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 />'; } }