parte - replace character in string php
¿Cómo obtener el último char de una cadena en PHP? (11)
Necesito obtener el último carácter de una cadena. Digamos que tengo "probadores" como cadena de entrada y quiero que el resultado sea "s". ¿Cómo puedo hacer eso en PHP?
A partir de PHP 7.1.0, las compensaciones de cadena negativa también son compatibles. Entonces, si te mantienes al día, puedes acceder al último carácter de la cadena de esta manera:
$str[-1]
En el prometedor PHP 7.1 podrá hacer esto ( rfc aceptado para compensaciones de cadena 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();
Te dejaré adivinar la salida.
Además, agregué esto al xenonite''s rendimiento xenonite''s con estos resultados:
substr () tomó 7.0334868431091segundos
el acceso a la matriz tomó 2.3111131191254segundos
El acceso directo a la cadena tomó 1.7971360683441segundos
No puedo dejar comentarios, pero con respecto a la respuesta de FastTrack, también recuerda que el final de la línea puede ser solo de un solo carácter. Yo sugeriría
substr(trim($string), -1)
EDITAR: Mi código a continuación fue editado por alguien, por lo que no hace lo que le indico. He restaurado mi código original y he cambiado la redacción para hacerlo más claro.
trim
(o rtrim
) eliminará todos los espacios en blanco, por lo que si necesita buscar un espacio, una pestaña u otro espacio en blanco, reemplace manualmente las distintas terminaciones de línea primero:
$order = array("/r/n", "/n", "/r");
$string = str_replace($order, '''', $string);
$lastchar = substr($string, -1);
O por acceso directo a la cadena :
$string[strlen($string)-1];
Tenga en cuenta que esto no funciona para cadenas multibyte. Si necesita trabajar con una cadena multibyte, considere usar la php.net/mb_substr
A partir de PHP 7.1.0, también se admiten índices numéricos negativos, por ejemplo, solo $string[-1];
Puede encontrar el último carácter usando php de muchas maneras, como substr() y mb_substr() .
Si está utilizando codificaciones de caracteres multibyte como UTF-8, use mb_substr en lugar de substr
Aquí les puedo mostrar ambos ejemplos:
<?php
echo substr("testers", -1);
echo mb_substr("testers", -1);
?>
Recomiendo ir por la solución de Gordon, ya que es más eficaz 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();
salidas algo como
----------------------------------
10000000 repetitions...
----------------------------------
substr() took 2.0285921096802seconds
array access took 1.7474739551544seconds
Recuerde, si tiene una cadena que se leyó como una línea de un archivo de texto usando la fgets()
, necesita usar substr($string, -3, 1)
para obtener el carácter real y no parte de la CRLF (alimentación de línea de retorno de carro).
No creo que la persona que hizo la pregunta lo necesitara, pero para mí, estaba teniendo problemas para obtener el último carácter de una cadena de un archivo de texto, así que estoy seguro de que otros encontrarán problemas similares.
Siemano, obtenga solo archivos php del directorio seleccionado:
$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 />'';
}
}
Una cadena en diferentes idiomas, incluyendo C sharp y PHP también se considera una matriz de caracteres.
Sabiendo que, en teoría, las operaciones de matriz deberían ser más rápidas que las de cadena que podría hacer,
$foo = "bar";
$lastChar = strlen($foo) -1;
echo $foo[$lastChar];
$firstChar = 0;
echo $foo[$firstChar];
Sin embargo, la matriz estándar funciona como
count();
no funcionará en una cadena.
substr("testers", -1); // returns "s"
substr($string, -1)