답변:
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.0334868431091seconds
배열 접근에 2.3111131191254seconds가 소요됨
직접 문자열 액세스 (음수 문자열 오프셋)에 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)
substr ()보다 성능이 우수하므로 Gordon의 솔루션을 사용하는 것이 좋습니다.
<?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);
?>
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()
있는 것처럼 도움 이 될 수 있습니다 .