Comment puis-je convertir une phrase en un tableau de mots?
Question
À partir de cette chaîne:
$input = "Some terms with spaces between";
comment puis-je produire ce tableau?
$output = ['Some', 'terms', 'with', 'spaces', 'between'];
La solution
Vous pouvez utiliser exploser
, fractionné
ou preg_split
.
explode
utilise une chaîne fixe:
$parts = explode(' ', $string);
quand split
et preg_split
utilisent une expression régulière:
$parts = split(' +', $string);
$parts = preg_split('/ +/', $string);
Exemple où le fractionnement basé sur une expression régulière est utile:
$string = 'foo bar'; // multiple spaces
var_dump(explode(' ', $string));
var_dump(split(' +', $string));
var_dump(preg_split('/ +/', $string));
Autres conseils
$parts = explode(" ", $str);
print_r(str_word_count("this is a sentence", 1));
Résultats en:
Array ( [0] => this [1] => is [2] => a [3] => sentence )
Je viens de penser qu’il vaudrait la peine de mentionner que l’expression régulière affichée par Gumbo - bien qu’elle soit probablement suffisante pour la plupart des gens - pourrait ne pas intercepter tous les cas d’espace. Un exemple: Utilisation de l'expression régulière dans la réponse approuvée sur la chaîne ci-dessous:
$sentence = "Hello my name is peter string splitter";
m'a fourni la sortie suivante via print_r:
Array
(
[0] => Hello
[1] => my
[2] => name
[3] => is
[4] => peter
[5] => string
[6] => splitter
)
Où que, lors de l'utilisation de l'expression régulière suivante:
preg_split('/\s+/', $sentence);
m'a fourni la sortie suivante (souhaitée):
Array
(
[0] => Hello
[1] => my
[2] => name
[3] => is
[4] => peter
[5] => string
[6] => splitter
)
J'espère que cela aidera tout le monde à se heurter à un obstacle similaire et à ne pas savoir pourquoi.
Juste une question, mais essayez-vous de transformer les données en JSON? Si tel est le cas, vous pouvez envisager quelque chose comme ceci:
return json_encode(explode(' ', $inputString));