preg_split space 没有分裂

preg_split not splitting on space

我正在尝试使用 preg_split 在任意数量的 space 上拆分字符串,在用 space 替换字母或数字以外的任何内容后......这是我的代码(包括一些调试内容):

$input = strtolower($data_current[0]);
$input = preg_replace('/[^a-z0-9]/', ' ', $input);
echo($input."\r\n");
$array = preg_split('/[\s]+/', $input, PREG_SPLIT_NO_EMPTY);
print_r($array);
die;

假设$data_current[0]的值为'hello world'。我得到的输出是这样的...

hello world
array
(
    [0] => hello world
)

显然,我希望有一个包含两个值的数组...'hello' 和 'world.'

这到底是怎么回事? $data_current 数组从 CSV 中读出(使用 fgetcsv)如果有帮助...

问题是您使用的是 PREG_SPLIT_NO_EMPTY 但不是第四个参数,而是将其作为第三个参数,有效地设置了限制,请参阅 preg_split().[=15 上的手册=]

你应该使用:

preg_split('/\s+/', $input, -1, PREG_SPLIT_NO_EMPTY);
                                ^^ flags go in the 4th parameter of the function
                            ^^ default value, no limit

或:

preg_split('/\s+/', $input, NULL, PREG_SPLIT_NO_EMPTY);

要拆分为两个或更多空格,请更改

$array = preg_split('/[\s]+/', $input, PREG_SPLIT_NO_EMPTY);

$array = preg_split('/[\s][\s]+/', $input);