Как получить последний символ строки в PHP?
Я пытаюсь получить последний символ строки в PHP. Например, у меня есть строка "testers", и я хочу, чтобы результатом был символ "s". Как я могу это сделать?
5 ответ(ов)
В PHP функция substr()
позволяет извлекать подстроки из строк. Если вы передаете отрицательное значение в качестве второго аргумента, это будет означать, что извлечение будет начинаться с конца строки. Например:
substr("testers", -1); // возвращает "s"
В этом примере -1
указывает на то, что мы хотим получить последний символ строки "testers", который действительно является "s".
Если вы работаете с многобайтовыми строками (например, с символами Юникода), рекомендуется использовать функцию mb_substr()
, которая правильно обрабатывает многошаговые символы. Вот пример:
mb_substr("multibyte string…", -1); // возвращает "…"
В этом случае mb_substr()
также возвращает последний символ строки, который в данном случае представляет собой многобайтовый символ "…". Это важно, чтобы избежать проблем с неправильным разбором символов в строках с многобайтовыми кодировками.
Функция substr($string, -1)
в PHP используется для получения последнего символа строки $string
. Параметр -1
указывает, что извлечение должно начинаться с конца строки, что позволяет легко получить последний символ.
Например:
$string = "Hello, World!";
$lastCharacter = substr($string, -1);
echo $lastCharacter; // Вывод: !
Если вам нужно получить не только последний символ, а, например, последние три символа, вы можете изменить второй параметр:
$lastThreeCharacters = substr($string, -3);
echo $lastThreeCharacters; // Вывод: ld!
Таким образом, использование отрицательных индексов в substr
позволяет удобно работать с конечными частями строк.
Не могу оставлять комментарии, но в отношении ответа FastTrack, также не забудьте, что символ конца строки может быть всего лишь одним символом. Я бы предложил
substr(trim($string), -1)
EDIT: Мой код ниже был отредактирован кем-то, и теперь он не делает то, что я указал. Я восстановил свой оригинальный код и изменил формулировку, чтобы сделать её более ясной.
trim
(или rtrim
) удалит все пробелы, поэтому, если вам нужно проверить наличие пробела, табуляции или других пробельных символов, замените различные символы конца строки вручную:
$order = array("\r\n", "\n", "\r");
$string = str_replace($order, '', $string);
$lastchar = substr($string, -1);
Я бы порекомендовал воспользоваться решением Гордона, так как оно более производительное, чем 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()
. Это может иметь значение, особенно если вам нужно выполнить подобные операции большое количество раз.
Помните, если вы считали строку из текстового файла с помощью функции fgets()
, вам нужно использовать substr($string, -3, 1)
, чтобы получить сам символ, а не часть CRLF (возврат каретки + перевод строки).
Не думаю, что спрашивающему именно это было нужно, но у меня возникали трудности с получением последнего символа из строки файла, так что уверен, другие могут столкнуться с подобными проблемами.
Как проверить, содержит ли строка конкретное слово?
Функции startsWith() и endsWith() в PHP
Удалить пустые элементы массива
Генератор случайных строк на PHP
В чем разница между строками в одинарных и двойных кавычках в PHP?