Как получить последний символ строки в PHP?
Основной способ: substr() — универсальное решение
Самый надёжный и обратно совместимый способ — использовать функцию substr() с отрицательным значением длины. Отрицательное число означает «отсчёт от конца строки».
<?php
$string = "Hello, world!";
$lastChar = substr($string, -1); // !
echo $lastChar; // выведет: !
?>
Если строка пустая, substr() вернёт false (до PHP 8.0) или пустую строку (начиная с PHP 8.0). Чтобы избежать ошибок, всегда проверяйте длину строки:
<?php
$string = ""; // пустая строка
if (strlen($string) > 0) {
$lastChar = substr($string, -1);
echo $lastChar;
} else {
echo "Строка пуста";
}
?>
Современный способ: синтаксис массивов (PHP 7.1+)
Начиная с PHP 7.1, к строке можно обращаться как к массиву, используя отрицательные индексы:
<?php
$string = "Hello, world!";
$lastChar = $string[-1]; // !
echo $lastChar;
?>
Этот способ короче, но работает только на PHP 7.1 и новее. Для пустой строки он вернёт пустую строку без ошибки (начиная с PHP 7.1). Однако если вы используете старый хостинг с PHP 5.x, такой код вызовет ошибку.
Альтернативный способ: mb_substr() для многобайтовых строк
Если ваша строка содержит кириллицу, иероглифы или эмодзи, обычный substr() может отрезать неправильно (он работает с байтами, а не с символами). В таком случае используйте мультибайтовую версию:
<?php
$string = "Привет, мир!";
$lastChar = mb_substr($string, -1); // !
echo $lastChar;
?>
Для корректной работы mb_substr() требуется расширение mbstring, которое обычно включено в современных сборках PHP.
Сравнение методов
- substr($str, -1) — работает на всех версиях PHP, но не поддерживает многобайтовые кодировки.
- $str[-1] — короткий синтаксис, требует PHP 7.1+, не поддерживает многобайтовые строки.
- mb_substr($str, -1) — универсальный для любых кодировок (UTF-8), требует расширения mbstring.
Рекомендация
Для большинства проектов используйте substr($string, -1) с проверкой длины строки. Если работаете с UTF-8 (кириллица, эмодзи) — переходите на mb_substr(). Не забывайте обрабатывать пустые строки, чтобы избежать ошибок в логах.
Использование str_split() и end()
Ещё один способ — разбить строку на массив символов и взять последний элемент:
<?php
$string = "Hello, world!";
$chars = str_split($string);
$lastChar = end($chars); // !
echo $lastChar;
?>
Этот метод работает на всех версиях PHP и не требует проверки длины строки — если строка пуста, end() вернёт false. Однако он менее производительный, так как создаёт массив из всех символов. Для коротких строк это не критично, но для больших текстов лучше использовать substr().
Использование регулярного выражения
Можно извлечь последний символ с помощью регулярного выражения:
<?php
$string = "Hello, world!";
preg_match('/.$/', $string, $matches);
$lastChar = $matches[0] ?? ''; // !
echo $lastChar;
?>
Регулярное выражение /.$/ означает «любой символ в конце строки». Этот способ избыточен для простой задачи, но может быть полезен, если нужно одновременно выполнить более сложную обработку (например, проверить, является ли последний символ буквой).
Ответов пока нет.
Войдите чтобы оставить ответ