(PHP 4, PHP 5, PHP 7, PHP 8)
substr — Возвращает подстроку
Функция возвращает часть строки 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)