PHP7在null / empty字符串上的substr()行为

时间:2017-09-17 06:33:21

标签: php string substr

我正在阅读adding --v=2的PHP手册,其中包含有关输入字符串参数的以下内容:

  

字符串

     

输入字符串。 必须是一个字符或更长

但是在示例部分的页面中,这是其中一个示例:

// ...
echo "6) ".var_export(substr("", 0, 1), true).PHP_EOL;
// ...

这显然与输入字符串的规范相矛盾,输入字符串要求一个字符或更长。页面声明上述输出为6) ''

来自C / C ++背景我非常小心UB,所以我想知道将NULL""传递给substr()是否合法?

1 个答案:

答案 0 :(得分:1)

通常,您应该手动阅读PHP手册,特别是对于完善的核心语言功能。这是一个演示,它的价值。

https://3v4l.org/8RKbG

IMO,你应该没有一个空字符串(当前的实现受到保护,我不会看到很快就会改变)。在调用substr()之前获取空字符串肯定没有坏处。

然而,空值似乎在HHVM(仅在那里)触发警告,这很有趣。但这个事实的相关性完全取决于你。