我需要得到字符串的最后一个字符。 假设我有“测试者”作为输入字符串,我希望结果是“s”。PHP中怎么做呢?


当前回答

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

其他回答

从PHP 7.1.0开始,也支持负字符串偏移量。 所以,如果你跟上时代,你可以像这样访问字符串的最后一个字符:

$str[-1]

DEMO

应@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)

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

我不认为提出这个问题的人需要这个,但对我来说,我在从文本文件的字符串中获取最后一个字符时遇到了麻烦,所以我相信其他人也会遇到类似的问题。

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

或者,对于多字节字符串:

mb_substr("multibyte string…", -1); // returns "…"

不同语言(包括C sharp和PHP)中的字符串也被认为是字符数组。

知道在理论上数组操作应该比字符串操作快,

$foo = "bar";


$lastChar = strlen($foo) -1;
echo $foo[$lastChar];

$firstChar = 0;
echo $foo[$firstChar];

然而,标准数组函数像

count();

对字符串无效。

substr($string, -1)