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)

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