preg_split没有在空间上分裂

时间:2015-03-10 12:48:27

标签: php regex preg-replace preg-split

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

$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
)

显然,我期待一个有两个值的数组......'你好'和'世界'。

世界上到底发生了什么?如果有帮助,$data_current数组将从CSV中读取(使用fgetcsv

2 个答案:

答案 0 :(得分:3)

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

您应该使用:

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);

答案 1 :(得分:0)

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

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

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