在空字符串上使用 preg_split

Using preg_split on an empty string

在PHP时,我运行执行以下命令:

$text = "";
$arr = preg_split('/,/', $text, PREG_SPLIT_NO_EMPTY);
print_r($arr);

我得到以下包含一个空元素的数组:

Array
(
    [0] => 
)

然而,如果我 运行 它以 -1 作为限制:

$text = "";
$arr = preg_split('/,/', $text, -1, PREG_SPLIT_NO_EMPTY);
print_r($arr);

我得到一个完全空的数组:

Array
(
)

为什么会这样?根据 PHP manual -1 是默认值,因此我希望两种情况下的结果相同。

preg_split($pattern , $subject [, int $limit = -1     [, int $flags = 0 ]] )
preg_split('/,/'    , $text     , PREG_SPLIT_NO_EMPTY                      );

第三个参数是限制,PREG_SPLIT_NO_EMPTY == 1,当您将 PREG_SPLIT_NO_EMPTY 作为第三个参数传递时,您是在告诉它限制是 1 - 您 不是 将其作为标志传递。