Come posso convertire una frase in un array di parole?
Domanda
Da questa stringa:
$input = "Some terms with spaces between";
come posso produrre questo array?
$output = ['Some', 'terms', 'with', 'spaces', 'between'];
Soluzione
È possibile utilizzare explode
, split
o preg_split
.
explode
utilizza una stringa fissa:
$parts = explode(' ', $string);
mentre split
e preg_split
usano un'espressione regolare:
$parts = split(' +', $string);
$parts = preg_split('/ +/', $string);
Un esempio in cui la suddivisione basata sull'espressione regolare è utile:
$string = 'foo bar'; // multiple spaces
var_dump(explode(' ', $string));
var_dump(split(' +', $string));
var_dump(preg_split('/ +/', $string));
Altri suggerimenti
$parts = explode(" ", $str);
print_r(str_word_count("this is a sentence", 1));
Risultati in:
Array ( [0] => this [1] => is [2] => a [3] => sentence )
Ho solo pensato che varrebbe la pena ricordare che l'espressione regolare pubblicata da Gumbo, anche se sarà probabilmente più che sufficiente per la maggior parte, potrebbe non catturare tutti i casi di spazio bianco. Un esempio: utilizzo dell'espressione regolare nella risposta approvata nella stringa seguente:
$sentence = "Hello my name is peter string splitter";
Mi ha fornito il seguente output tramite print_r:
Array
(
[0] => Hello
[1] => my
[2] => name
[3] => is
[4] => peter
[5] => string
[6] => splitter
)
Where as, quando si utilizza la seguente espressione regolare:
preg_split('/\s+/', $sentence);
Mi ha fornito il seguente output (desiderato):
Array
(
[0] => Hello
[1] => my
[2] => name
[3] => is
[4] => peter
[5] => string
[6] => splitter
)
Spero che aiuti chiunque sia bloccato su un ostacolo simile ed è confuso sul perché.
Solo una domanda, ma stai provando a ricavare json dai dati? In tal caso, potresti prendere in considerazione qualcosa del genere:
return json_encode(explode(' ', $inputString));