una parte extraer eliminar dividir caracteres caracter cadena buscar php string

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]

DEMO


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); ?>

DEMO EN VIVO


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)