substr

(PHP 4, PHP 5, PHP 7, PHP 8)

substrВозвращает подстроку

Описание

substr(string$string, int$offset, ?int$length = null): string

Функция возвращает часть строки string. Начало подстроки указывают в параметре offset, а длину — в параметре length.

Список параметров

string

Входная строка.

offset

Если смещение offset неотрицательно, возвращаемая подстрока начинается с позиции offset от начала строки, считая с нуля. Например, в строке «abcdef», на позиции 0 находится символ «a», на позиции 2 — символ «c» и т. д.

Если смещение offset отрицательно, возвращаемая подстрока начинается с позиции, которая отстаёт на offset символов от конца строки string.

Если длина строки string меньше смещения offset символов, функция вернёт пустую строку.

Пример #1 Пример с отрицательным смещением offset

<?php

$rest
= substr("abcdef", -1); // Возвращает «f»
$rest = substr("abcdef", -2); // Возвращает «ef»
$rest = substr("abcdef", -3, 1); // Возвращает «d»

?>
length

Если значение length положительно, возвращаемая строка будет не длиннее length символов, начиная с параметра offset (в зависимости от длины строки string).

Если значение параметра length отрицательно, будет отброшено заданное этим аргументом число символов с конца строки string (после вычисления стартовой позиции, если смещение offset отрицательно). Если при этом позиция начала подстроки, которую определил аргумент offset, находится в отброшенной части строки или за ней, возвращается пустая строка.

Если параметр length задали и значение равно 0, функция вернёт пустую строку.

Если параметр length не указали или значение равно null, функция вернёт подстроку, которая начинается с позиции значения offset и длится до конца строки.

Пример #2 Пример с отрицательным значением параметра length

<?php

$rest
= substr("abcdef", 0, -1); // Возвращает «abcde»
$rest = substr("abcdef", 2, -1); // Возвращает «cde»
$rest = substr("abcdef", 4, -4); // Возвращает «»; до PHP 8.0.0 возвращалось false
$rest = substr("abcdef", -3, -1); // Возвращает «de»

?>

Возвращаемые значения

Функция возвращает извлечённую часть строки string или пустую строку.

Список изменений

ВерсияОписание
8.0.0 Параметр length теперь принимает значение null. Если значение параметра length явно задали как null, функция возвращает подстроку, которая заканчивается в конце строки; раньше возвращалась пустая строка.
8.0.0 Функция возвращает пустую строку там, где раньше возвращала false.

Примеры

Пример #3 Базовое использование функции substr()

<?php

echo substr('abcdef', 1); // bcdef
echo substr("abcdef", 1, null); // bcdef; до PHP 8.0.0 возвращалась пустая строка
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 4); // abcd
echo substr('abcdef', 0, 8); // abcdef
echo substr('abcdef', -1, 1); // f

// Получить доступ к отдельному символу в строке
// можно также с помощью квадратных скобок
$string = 'abcdef';
echo
$string[0]; // a
echo $string[3]; // d
echo $string[strlen($string)-1]; // f

?>

Пример #4 Функция substr() и приведение типов

<?php

class apple
{
public function
__toString()
{
return
"green";
}
}

echo
"1) ".var_export(substr("pear", 0, 2), true).PHP_EOL;
echo
"2) ".var_export(substr(54321, 0, 2), true).PHP_EOL;
echo
"3) ".var_export(substr(new apple(), 0, 2), true).PHP_EOL;
echo
"4) ".var_export(substr(true, 0, 1), true).PHP_EOL;
echo
"5) ".var_export(substr(false, 0, 1), true).PHP_EOL;
echo
"6) ".var_export(substr("", 0, 1), true).PHP_EOL;
echo
"7) ".var_export(substr(1.2e3, 0, 4), true).PHP_EOL;

?>

Результат выполнения приведённого примера:

1) 'pe' 2) '54' 3) 'gr' 4) '1' 5) '' 6) '' 7) '1200'

Пример #5 Недопустимый диапазон символов

Если запрашивается недопустимый диапазон символов, функция substr() начиная с PHP 8.0.0 возвращает пустую строку; раньше возвращалось false.

<?php

var_dump
(substr('a', 2));

?>

Результат выполнения приведённого примера в PHP 8:

string(0) ""

Результат выполнения приведённого примера в PHP 7:

bool(false)

Смотрите также

To Top