PHP에서 문자열의 마지막 문자를 가져오려면 어떻게 해야 합니까?
문자열의 마지막 문자를 가져와야 합니다.입력 문자열로 "테스트"가 있고 결과가 "s"가 되었으면 합니다. PHP에서 어떻게 하면 될까요?
substr("testers", -1); // returns "s"
또는 멀티바이트 문자열의 경우:
mb_substr("multibyte string…", -1); // returns "…"
substr($string, -1)
$string[strlen($string)-1];
멀티바이트 문자열에서는 작동하지 않습니다.멀티바이트 문자열을 사용해야 하는 경우 문자열 패밀리 함수 사용을 고려해 보십시오.
PHP 7.1.0을 기준으로 음의 숫자 인덱스도 지원됩니다. 예를 들어,$string[-1];
PHP 7.1에서 이 작업을 수행할 수 있습니다(네거티브 문자열 오프셋에 대해 수락된 rfccepted 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();
제가 결과를 맞혀볼게요.
또한 제논나이트의 성능 코드에 다음과 같은 결과를 추가했습니다.
subst()는 7.0334868431091초 소요되었습니다.
어레이 액세스에 2.311131191254초 소요
직접 문자열 액세스(부정 문자열 오프셋)에 1.7971360683441초가 소요되었습니다.
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)
코멘트를 남길 수는 없지만, Fast Track의 답변에 대해서는, 행의 엔딩이 1글자일 가능성도 있습니다.제안하고 싶다
substr(trim($string), -1)
편집: 아래 코드는 다른 사람이 수정한 것으로, 제가 지시한 대로 되지 않습니다.저는 원래의 코드를 복원하고 보다 명확하게 하기 위해 문구를 변경했습니다.
trim
(또는rtrim
)에서는 모든 공백이 삭제되므로 공백, 탭 또는 기타 공백이 있는지 확인해야 할 경우 먼저 다양한 행의 끝을 수동으로 바꿉니다.
$order = array("\r\n", "\n", "\r");
$string = str_replace($order, '', $string);
$lastchar = substr($string, -1);
Gordon의 솔루션은 subst()보다 성능이 우수하기 때문에 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
텍스트 파일에서 행으로 읽은 문자열이 있는 경우fgets()
기능, 이 기능을 사용할 필요가 있습니다.substr($string, -3, 1)
따라서 CRLF(Carriage Return Line Feed)의 일부가 아닌 실제 문자를 얻을 수 있습니다.
질문을 한 사람은 이 문제가 필요하지 않다고 생각합니다만, 저는 텍스트 파일의 문자열에서 마지막 문자를 얻는 데 어려움을 겪고 있었기 때문에 다른 사람도 비슷한 문제를 겪게 될 것입니다.
PHP 8부터 사용 가능
$string = 'testers';
if (\str_ends_with($string, 's') {
// yes
}
마지막 문자는 substr() 및 mb_substr()과 같은 다양한 방법으로 php를 사용하여 찾을 수 있습니다.
UTF-8과 같은 멀티바이트 문자 인코딩을 사용하는 경우 기판 대신 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();
문자열에서는 동작하지 않습니다.
subst()의 서브젝트이다.$newstring = substr($string1, -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 />';
}
}
언급URL : https://stackoverflow.com/questions/2681786/how-to-get-the-last-char-of-a-string-in-php
'programing' 카테고리의 다른 글
SQL: *condition*이 다른 행에 있는 경우 행을 업데이트합니다. (0) | 2022.10.05 |
---|---|
오늘 자정 타임 스탬프 구해요? (0) | 2022.10.05 |
휴지 상태 - 요청된 클래스 org.mariadb.jdbc를 로드할 수 없습니다.드라이버 (0) | 2022.10.04 |
반사를 사용하여 방법이 정적인지 어떻게 확인할 수 있습니까? (0) | 2022.10.04 |
JSLint 오류 '의 본문을 if 문으로 감싸야 한다'는 것은 무엇을 의미합니까? (0) | 2022.10.04 |