#php #php-8
#php #php-8
Вопрос:
В документах PHP для substr()
говорится:
Если длина строки меньше начальных символов, будет возвращено значение FALSE.
и приводит пример
$rest = substr("abcdef", 4, -4); // returns false
Интересно, что это, похоже, неверно, начиная с PHP 8.0.0rc1, поскольку в более новых версиях функция вместо этого возвращает пустую строку:
Это ошибка в PHP или недокументированное изменение (или я что-то недопонимаю)?
Комментарии:
1. Как насчет rc4?
2. Тот факт, что такое поведение проявляется в rc, говорит мне, что это может быть ошибкой.
3. @MarkusZeller, вам придется создавать ее самостоятельно, поскольку rc4 пока недоступен на 3v4l.
4. На этой странице описывается то же самое и помечается как «изменение», хотя я не уверен, на чем они основываются.
5. github.com/php/php-src/pull/6182 показывает, что это действительно кажется преднамеренным.
Ответ №1:
Похоже, это было преднамеренное изменение, как упоминалось в https://php.watch/versions/8.0/substr-out-of-bounds
и реализовано здесь: