Answers:
substr("testers", -1); // returns "s"
或者,对于多字节字符串:
substr("multibyte string…", -1); // returns "…"
mb_substr
(php.net/mb_substr)。
或通过直接字符串访问:
$string[strlen($string)-1];
请注意,这不适用于多字节字符串。如果需要使用多字节字符串,请考虑使用mb_*
字符串函数系列。
从PHP 7.1.0开始,还支持负数值索引,例如 $string[-1];
在PHP 7.1中,您可以执行以下操作(对于负的字符串偏移量,可接受rfc):
<?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}; // <-- this will be deprecated in PHP 7.4
die();
我让你猜输出。
此外,我将这些添加到xenonite的性能代码中,结果如下:
substr()花了7.0334868431091秒
阵列存取耗时2.3111131191254秒
直接字符串访问(负字符串偏移量)花费了1.7971360683441秒
我不能发表评论,但是关于FastTrack的答案,还请记住,行尾可能只是单个字符。我会建议
substr(trim($string), -1)
编辑: 我下面的代码是由某人编辑的,使其不符合我的指示。我已经恢复了原始代码,并更改了措辞以使其更加清晰。
trim
(或rtrim
)将删除所有空格,因此,如果您确实需要检查空格,制表符或其他空格,请先手动替换各种行尾:
$order = array("\r\n", "\n", "\r");
$string = str_replace($order, '', $string);
$lastchar = substr($string, -1);
从PHP 7.1.0开始,还支持负字符串偏移量。因此,如果您紧跟时代发展,可以访问字符串中的最后一个字符,如下所示:
$str[-1]
应@mickmackusa的要求,我用可能的应用方式补充我的答案:
<?php
$str='abcdef';
var_dump($str[-2]); // => string(1) "e"
$str[-3]='.';
var_dump($str); // => string(6) "abc.ef"
var_dump(isset($str[-4])); // => bool(true)
var_dump(isset($str[-10])); // => bool(false)
我建议您使用Gordon的解决方案,因为它比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的许多方法找到最后一个字符,例如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 />';
}
}
s($str)->end()
如独立库中所示,您可能会发现有帮助。