(PHP 4, PHP 5, PHP 7, PHP 8)
substr — Возвращает подстроку
$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)