Pergunta

A partir desta string:

$input = "Some terms with spaces between";

Como eu posso produzir essa matriz?

$output = ['Some', 'terms', 'with', 'spaces', 'between'];
Foi útil?

Solução

Você pode usar explode , split ou preg_split .

explode usa uma seqüência fixa:

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

enquanto split e uso preg_split uma expressão regular:

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

Um exemplo onde a divisão baseada expressão regular é útil:

$string = 'foo   bar';  // multiple spaces
var_dump(explode(' ', $string));
var_dump(split(' +', $string));
var_dump(preg_split('/ +/', $string));

Outras dicas

$parts = explode(" ", $str);
print_r(str_word_count("this is a sentence", 1));

Resultados em:

Array ( [0] => this [1] => is [2] => a [3] => sentence )

Apenas pensei que seria vale a pena mencionar que a expressão regular Gumbo postou-embora provavelmente mais do que suficiente para a maioria-não pode pegar todos os casos de white-space. Um exemplo: Usando a expressão regular na resposta aprovado na corda abaixo:

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

me proporcionou a seguinte saída através print_r:

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

Onde como, quando se utiliza a seguinte expressão regular:

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

me forneceu o seguinte resultado (desejado):

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

Espero que ajude alguém preso em um obstáculo semelhante e está confuso quanto ao porquê.

Apenas uma pergunta, mas você está tentando fazer JSON a partir dos dados? Se assim for, então você pode considerar algo como isto:

return json_encode(explode(' ', $inputString));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top