我正在阅读adding --v=2的PHP手册,其中包含有关输入字符串参数的以下内容:
字符串
输入字符串。 必须是一个字符或更长。
但是在示例部分的页面中,这是其中一个示例:
// ...
echo "6) ".var_export(substr("", 0, 1), true).PHP_EOL;
// ...
这显然与输入字符串的规范相矛盾,输入字符串要求一个字符或更长。页面声明上述输出为6) ''
。
来自C / C ++背景我非常小心UB,所以我想知道将NULL
或""
传递给substr()
是否合法?
答案 0 :(得分:1)
通常,您应该手动阅读PHP手册,特别是对于完善的核心语言功能。这是一个演示,它的价值。
IMO,你应该没有一个空字符串(当前的实现受到保护,我不会看到很快就会改变)。在调用substr()
之前获取空字符串肯定没有坏处。
然而,空值似乎在HHVM(仅在那里)触发警告,这很有趣。但这个事实的相关性完全取决于你。