PHP 2 个字符串的错误?

PHP bug for 2 character strings?

给定字符串 $s 和函数 substr(substr($s, 1), -1) 你会期望从前面去掉一个字符,从后面去掉一个字符。

如果你 运行 substr(substr('abc', 1), -1) === 'b' 你会得到什么并且,如果你 运行 它在 ab 你会得到 b.

但是,如果您 运行 substr(substr($s, -1), 1) 您会在 2 个字符串上获得所需的结果。

这在 PHP 5.5 和 7.0

中是相同的

substr(substr('ab', 1), -1) 发生了什么:

  • substr('ab', 1)returnb,以及substr('b', -1)returnb。为什么?由于 documented,如果 substr 的第二个参数为负数,则 returned 字符串将从字符串.

改为substr(substr('ab', -1), 1):

  • substr('ab', -1) 将 return bsubstr('b', 1) return false,因为,始终如文档所示:如果字符串小于起始字符长,则 FALSE 将被 returned.

这里没有错误。