回答:
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の回答に関しては、行末が1文字のみであることも覚えておいてください。私は提案します
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)
それは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
最後の文字は、substr()やmb_substr()などのさまざまな方法でphpを使用して検索できます。
UTF-8などのマルチバイト文字エンコーディングを使用している場合は、substrではなくmb_substrを使用します
ここで私はあなたに両方の例を示すことができます:
<?php
echo substr("testers", -1);
echo mb_substr("testers", -1);
?>
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()
にあるように、役立つ場合があります。