PHP7 在 null/empty 字符串上的 substr() 行为
PHP7's substr() behavior on null/empty strings
我正在阅读 substr() 的 PHP 手册,其中对输入字符串参数的说明如下:
string
The input string. Must be one character or longer.
但在示例部分的页面下方,这是示例之一:
// ...
echo "6) ".var_export(substr("", 0, 1), true).PHP_EOL;
// ...
这显然与要求 一个字符或更长 的输入字符串规范相矛盾。该页面声明上面的输出将是 6) ''
.
来自 C/C++ 背景,我对 UB 非常小心,所以我想知道是否将 NULL
或 ""
传递给 substr()
合法吗?
通常,您应该随意使用 PHP 手册语句,尤其是对于完善的核心语言功能。这是一个演示,物有所值。
IMO,空字符串应该没问题(当前的实现受到保护,我认为短期内不会发生变化)。在调用 substr()
之前清除空字符串当然没有任何坏处。
然而,空值似乎会在 HHVM 下(并且仅在该处)触发警告,这很有趣。但这个事实的相关性完全取决于你。
我正在阅读 substr() 的 PHP 手册,其中对输入字符串参数的说明如下:
string
The input string. Must be one character or longer.
但在示例部分的页面下方,这是示例之一:
// ...
echo "6) ".var_export(substr("", 0, 1), true).PHP_EOL;
// ...
这显然与要求 一个字符或更长 的输入字符串规范相矛盾。该页面声明上面的输出将是 6) ''
.
来自 C/C++ 背景,我对 UB 非常小心,所以我想知道是否将 NULL
或 ""
传递给 substr()
合法吗?
通常,您应该随意使用 PHP 手册语句,尤其是对于完善的核心语言功能。这是一个演示,物有所值。
IMO,空字符串应该没问题(当前的实现受到保护,我认为短期内不会发生变化)。在调用 substr()
之前清除空字符串当然没有任何坏处。
然而,空值似乎会在 HHVM 下(并且仅在该处)触发警告,这很有趣。但这个事实的相关性完全取决于你。