1

Substr: примеры (PHP)

Использование 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); // Начало с позиции 6
World
$str = 'Hello World';
echo substr($str, 0, 5); // С начала, длина 5
Hello
Отрицательные параметры
$str = 'Hello World';
echo substr($str, -5); // Начало с 5 символа с конца
World
$str = 'Hello World';
echo substr($str, -10, 5); // С -10 символа, длина 5
ello
$str = 'Hello World';
echo substr($str, 0, -6); // С начала, отбросить 6 символов с конца
Hello
Особые случаи
$str = 'ab';
echo substr($str, 3); // Начало за границей строки
(пустая строка, false)

Похожие функции в PHP

mb_substr()

Функция для многобайтовых строк, например UTF-8. Работает корректно с символами, занимающими более одного байта. При работе с кириллицей или другими многобайтовыми кодировками предпочтительнее использовать именно её.

strstr() и stristr()

Функции для поиска первого вхождения подстроки и возврата части строки от этого вхождения до конца. stristr() выполняет поиск без учета регистра. Полезны, когда начальная точка определяется по содержимому, а не по числовой позиции.

Разбивает строку на массив по разделителю. Позволяет извлекать части строки, логически разделенные определенным символом (например, запятой в CSV).

Распространенные ошибки

Некорректная работа с кириллицей

Функция substr() считает байты, а не символы. В UTF-8 кириллические символы занимают 2 байта, что приводит к ошибкам.

$str = 'Привет';
echo substr($str, 0, 3); // Ожидается 'При', но...
П� (битый символ)

Решение: использовать mb_substr() с указанием кодировки.

Пустой результат при длине 0
$str = 'Hello';
var_dump(substr($str, 2, 0));
string(0) ""

Функция возвращает пустую строку, а не false. Это корректное поведение, но его часто не ожидают.

Ожидание false при ошибке

В PHP 8.0 поведение изменилось. При передаче некорректных смещений функция теперь возвращает пустую строку вместо false.

Изменения в новых версиях PHP

PHP 8.0

Наиболее значимое изменение. При передаче недопустимого смещения (выходящего за границы строки) функция 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
Пример php
$email = 'user@example.com';
$domain = substr($email, strpos($email, '@') + 1);
echo $domain;
example.com
Форматирование отображения длинного текста
Пример php
$text = 'Очень длинная строка, которую нужно обрезать для анонса.';
$short = substr($text, 0, 30) . '...';
echo $short;
Очень длинная строка, которую н...
Получение последних N символов
Пример php
$filename = 'report_2023.pdf';
$extension = substr($filename, -3);
echo $extension;
pdf
Обработка строки с использованием отрицательной длины
Пример php
$data = 'apple,banana,cherry,date';
// Убрать последний элемент
$withoutLast = substr($data, 0, -6); // ',date' - это 6 символов
echo $withoutLast;
apple,banana,cherry
Имитация функции firstN и lastN
Пример php
function firstN($str, $n) { return substr($str, 0, $n); }
function lastN($str, $n) { return substr($str, -$n); }
echo firstN('Добро пожаловать', 6) . '
';
echo lastN('Добро пожаловать', 8);
Добро п
пожаловать
Работа с фиксированными форматами данных
Пример php
// Предположим, строка: код из 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]) # Hello
World
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)); // World
World
World

Substr в MySQL

Функция SUBSTRING(string, start, length) или её синоним SUBSTR(). Нумерация символов начинается с 1.

SELECT SUBSTRING('Hello World', 7, 5);
World

PHP substr function comments

En
Substr Return part of a string