substr returns 当字符串小于 PHP 8 中的起始字符长度时为空字符串

substr returns an empty string when string is less than start characters long in PHP 8

PHP docs for substr() 说:

If string is less than start characters long, FALSE will be returned.

并举例说明

$rest = substr("abcdef", 4, -4);  // returns false

有趣的是,从 PHP 8.0.0rc1 开始这似乎不是真的,因为在较新的版本中函数 returns 是一个空字符串:

https://3v4l.org/RPU1s

这是 PHP 中的错误还是未记录的更改(或者我误解了什么)?

这似乎是中提到的有意更改 https://php.watch/versions/8.0/substr-out-of-bounds

并在此处实施:

https://github.com/php/php-src/pull/6182