9

从这个字符串:

$input = "Some terms with spaces between";

我怎样才能产生这个数组?

$output = ['Some', 'terms', 'with', 'spaces', 'between'];
4

5 回答 5

28

您可以使用explode,splitpreg_split.

explode使用固定字符串:

$parts = explode(' ', $string);

whilesplitpreg_split使用正则表达式:

$parts = split(' +', $string);
$parts = preg_split('/ +/', $string);

基于正则表达式的拆分有用的示例:

$string = 'foo   bar';  // multiple spaces
var_dump(explode(' ', $string));
var_dump(split(' +', $string));
var_dump(preg_split('/ +/', $string));
于 2009-03-06T12:46:16.900 回答
11
$parts = explode(" ", $str);
于 2009-03-06T12:46:06.683 回答
4
print_r(str_word_count("this is a sentence", 1));

结果是:

Array ( [0] => this [1] => is [2] => a [3] => sentence )
于 2010-07-04T15:53:14.470 回答
2

只是觉得值得一提的是,Gumbo 发布的正则表达式——尽管它可能对大多数人来说已经足够了——可能无法捕捉到所有的空白情况。一个例子:在以下字符串的批准答案中使用正则表达式:

$sentence = "Hello                       my name    is   peter string           splitter";

通过 print_r 为我提供了以下输出:

Array
(
    [0] => Hello
    [1] => my
    [2] => name
    [3] => is
    [4] => peter
    [5] => string
    [6] =>      splitter
)

其中,当使用以下正则表达式时:

preg_split('/\s+/', $sentence);

为我提供了以下(所需的)输出:

Array
(
    [0] => Hello
    [1] => my
    [2] => name
    [3] => is
    [4] => peter
    [5] => string
    [6] => splitter
)

希望它可以帮助任何陷入类似障碍并且对原因感到困惑的人。

于 2015-01-15T09:24:37.087 回答
1

只是一个问题,但是您是否要从数据中提取 json?如果是这样,那么您可能会考虑这样的事情:

return json_encode(explode(' ', $inputString));
于 2009-03-06T16:36:15.100 回答