5

Как получить последний символ строки в PHP?

7

Я пытаюсь получить последний символ строки в PHP. Например, у меня есть строка "testers", и я хочу, чтобы результатом был символ "s". Как я могу это сделать?

5 ответ(ов)

12

В PHP функция substr() позволяет извлекать подстроки из строк. Если вы передаете отрицательное значение в качестве второго аргумента, это будет означать, что извлечение будет начинаться с конца строки. Например:

substr("testers", -1); // возвращает "s"

В этом примере -1 указывает на то, что мы хотим получить последний символ строки "testers", который действительно является "s".

Если вы работаете с многобайтовыми строками (например, с символами Юникода), рекомендуется использовать функцию mb_substr(), которая правильно обрабатывает многошаговые символы. Вот пример:

mb_substr("multibyte string…", -1); // возвращает "…"

В этом случае mb_substr() также возвращает последний символ строки, который в данном случае представляет собой многобайтовый символ "…". Это важно, чтобы избежать проблем с неправильным разбором символов в строках с многобайтовыми кодировками.

0

Функция substr($string, -1) в PHP используется для получения последнего символа строки $string. Параметр -1 указывает, что извлечение должно начинаться с конца строки, что позволяет легко получить последний символ.

Например:

$string = "Hello, World!";
$lastCharacter = substr($string, -1);
echo $lastCharacter; // Вывод: !

Если вам нужно получить не только последний символ, а, например, последние три символа, вы можете изменить второй параметр:

$lastThreeCharacters = substr($string, -3);
echo $lastThreeCharacters; // Вывод: ld!

Таким образом, использование отрицательных индексов в substr позволяет удобно работать с конечными частями строк.

0

Не могу оставлять комментарии, но в отношении ответа FastTrack, также не забудьте, что символ конца строки может быть всего лишь одним символом. Я бы предложил

substr(trim($string), -1)

EDIT: Мой код ниже был отредактирован кем-то, и теперь он не делает то, что я указал. Я восстановил свой оригинальный код и изменил формулировку, чтобы сделать её более ясной.

trim (или rtrim) удалит все пробелы, поэтому, если вам нужно проверить наличие пробела, табуляции или других пробельных символов, замените различные символы конца строки вручную:

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

Я бы порекомендовал воспользоваться решением Гордона, так как оно более производительное, чем substr(). Вот пример кода на PHP, который иллюстрирует это:

<?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.0285921096802 seconds 
 array access took 1.7474739551544 seconds

Как видно из результатов, доступ к элементу массива (через strlen($string)-1) выполняется быстрее, чем использование функции substr(). Это может иметь значение, особенно если вам нужно выполнить подобные операции большое количество раз.

0

Помните, если вы считали строку из текстового файла с помощью функции fgets(), вам нужно использовать substr($string, -3, 1), чтобы получить сам символ, а не часть CRLF (возврат каретки + перевод строки).

Не думаю, что спрашивающему именно это было нужно, но у меня возникали трудности с получением последнего символа из строки файла, так что уверен, другие могут столкнуться с подобными проблемами.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь