Substr: примеры (PHP)
substr(string string, int start [, int length]): string|falseФункция substr() в PHP
Функция substr() используется для получения подстроки из заданной строки. Она возвращает часть строки, определенную начальным индексом и длиной.
- string - исходная строка, из которой извлекается подстрока. Обязательный аргумент.
- offset - целое число, указывающее начальную позицию. Если значение положительное, отсчет начинается с начала строки (от 0). Если отрицательное - с конца строки (-1 это последний символ).
- length - целое число, задающее длину извлекаемой подстроки. Необязательный аргумент. Если не указан, возвращается вся строка от начальной позиции до конца. Если отрицательный, то указанное количество символов будет отброшено с конца строки.
Функция применяется для обработки текстовых данных, когда необходимо выделить часть строки по известной позиции. Например, для извлечения префикса, суффикса, части имени файла или работы с данными фиксированного формата.
Примеры использования substr()
$str = 'Hello World';
echo substr($str, 6); // Начало с позиции 6World
$str = 'Hello World';
echo substr($str, 0, 5); // С начала, длина 5Hello
$str = 'Hello World';
echo substr($str, -5); // Начало с 5 символа с концаWorld
$str = 'Hello World';
echo substr($str, -10, 5); // С -10 символа, длина 5ello
$str = 'Hello World';
echo substr($str, 0, -6); // С начала, отбросить 6 символов с концаHello
$str = 'ab';
echo substr($str, 3); // Начало за границей строки(пустая строка, false)
Похожие функции в PHP
Функция для многобайтовых строк, например UTF-8. Работает корректно с символами, занимающими более одного байта. При работе с кириллицей или другими многобайтовыми кодировками предпочтительнее использовать именно её.
Функции для поиска первого вхождения подстроки и возврата части строки от этого вхождения до конца. stristr() выполняет поиск без учета регистра. Полезны, когда начальная точка определяется по содержимому, а не по числовой позиции.
Разбивает строку на массив по разделителю. Позволяет извлекать части строки, логически разделенные определенным символом (например, запятой в CSV).
Распространенные ошибки
Функция substr() считает байты, а не символы. В UTF-8 кириллические символы занимают 2 байта, что приводит к ошибкам.
$str = 'Привет';
echo substr($str, 0, 3); // Ожидается 'При', но...П� (битый символ)
Решение: использовать mb_substr() с указанием кодировки.
$str = 'Hello';
var_dump(substr($str, 2, 0));string(0) ""
Функция возвращает пустую строку, а не false. Это корректное поведение, но его часто не ожидают.
В PHP 8.0 поведение изменилось. При передаче некорректных смещений функция теперь возвращает пустую строку вместо false.
Изменения в новых версиях PHP
Наиболее значимое изменение. При передаче недопустимого смещения (выходящего за границы строки) функция substr() теперь возвращает пустую строку (""), тогда как в PHP 7.x она возвращала false. Это изменение устраняет частую ошибку при строгом сравнении (===) с false и упрощает обработку результата.
// PHP 7.x
$result = substr('abc', 5);
var_dump($result);bool(false)
// PHP 8.0+
$result = substr('abc', 5);
var_dump($result);string(0) ""
Расширенные примеры
$email = 'user@example.com';
$domain = substr($email, strpos($email, '@') + 1);
echo $domain;example.com
$text = 'Очень длинная строка, которую нужно обрезать для анонса.';
$short = substr($text, 0, 30) . '...';
echo $short;Очень длинная строка, которую н...
$filename = 'report_2023.pdf';
$extension = substr($filename, -3);
echo $extension;$data = 'apple,banana,cherry,date';
// Убрать последний элемент
$withoutLast = substr($data, 0, -6); // ',date' - это 6 символов
echo $withoutLast;apple,banana,cherry
function firstN($str, $n) { return substr($str, 0, $n); }
function lastN($str, $n) { return substr($str, -$n); }
echo firstN('Добро пожаловать', 6) . '
';
echo lastN('Добро пожаловать', 8);Добро п
пожаловать
// Предположим, строка: код из 2 символов, затем 5 цифр
$code = 'AB12345';
$prefix = substr($code, 0, 2);
$number = substr($code, 2, 5);
echo "Префикс: $prefix, Номер: $number";Префикс: AB, Номер: 12345
Аналоги функции в других языках
Substr в Python
Используется синтаксис среза (slice): string[start:stop:step]. Индексация также начинается с 0. Отрицательные значения отсчитываются с конца.
s = 'Hello World'
print(s[6:]) # World
print(s[-5:]) # World
print(s[0:5]) # HelloWorld
World
Hello
Substr в Javascript
Метод String.prototype.substring(start, end) или String.prototype.slice(start, end). Метод slice поддерживает отрицательные индексы, в отличие от substring.
let str = 'Hello World';
console.log(str.substring(6)); // World
console.log(str.slice(-5)); // WorldWorld
World
Substr в MySQL
Функция SUBSTRING(string, start, length) или её синоним SUBSTR(). Нумерация символов начинается с 1.
SELECT SUBSTRING('Hello World', 7, 5);World