uma - substr php




como obter o último caractere de uma string em PHP? (8)

Eu preciso pegar o último caractere de uma string. Digamos que eu tenha "testadores" como string de entrada e quero que o resultado seja "s". como posso fazer isso no PHP?


A partir do PHP 7.1.0, os deslocamentos negativos de string também são suportados. Então, se você acompanhar os tempos, você pode acessar o último caractere da string assim:

$str[-1]

DEMO


Eu aconselharia a ir para a solução de Gordon, pois tem mais desempenho que 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();

produz algo como

 ---------------------------------- 
 10000000 repetitions...
 ----------------------------------

 substr() took 2.0285921096802seconds 
 array access took 1.7474739551544seconds

Não posso deixar comentários, mas no que diz respeito à resposta do FastTrack, lembre-se também que a terminação de linha pode ser apenas um caractere único. eu sugeriria

substr(trim($string), -1)

EDIT: Meu código abaixo foi editado por alguém, fazendo com que não faça o que eu indiquei. Eu restaurei meu código original e mudei o texto para torná-lo mais claro.

trim (ou rtrim ) removerá todo o espaço em branco, portanto, se você precisar verificar um espaço, uma tabulação ou outro espaço em branco, substitua manualmente as várias terminações de linha primeiro:

$order = array("\r\n", "\n", "\r");
$string = str_replace($order, '', $string);
$lastchar = substr($string, -1);

No próximo PHP 7.1, você poderá fazer isso ( RFC aceito para compensações de string negativa ):

<?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};
die();

Eu vou deixar você adivinhar a saída.

Além disso, adicionei isso ao xenonite's desempenho xenonite's com estes resultados:

substr () demorou 7.0334868431091segundos

acesso de matriz levou 2,3111131191254seconds

O acesso direto à cadeia levou 1.7971360683441segundos


Siemano, obtenha apenas arquivos php do diretório selecionado:

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

Uma string em diferentes idiomas, incluindo C sharp e PHP, também é considerada uma matriz de caracteres.

Sabendo que, em teoria, as operações de array devem ser mais rápidas do que as que você pode fazer,

$foo = "bar";


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

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

No entanto, funções padrão de matriz como

count();

não funcionará em uma string.


substr($string, -1) 

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




string