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);
我正在尝试使用 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);