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