Como posso converter uma frase para um conjunto de palavras?
Pergunta
A partir desta string:
$input = "Some terms with spaces between";
Como eu posso produzir essa matriz?
$output = ['Some', 'terms', 'with', 'spaces', 'between'];
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));