文を単語の配列に変換するにはどうすればよいですか?
質問
この文字列から:
$input = "Some terms with spaces between";
この配列を作成するにはどうすればよいですか
$output = ['Some', 'terms', 'with', 'spaces', 'between'];
解決
explode
、 split
または preg_split
。
explode
は固定文字列を使用します:
$parts = explode(' ', $string);
while split
および preg_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));
他のヒント
$parts = explode(" ", $str);
print_r(str_word_count("this is a sentence", 1));
結果:
Array ( [0] => this [1] => is [2] => a [3] => sentence )
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
)
同様のハードルで立ち往生している人を助けることを願っており、理由について混乱しています。
質問ですが、データからJSONを作成しようとしていますか?もしそうなら、あなたは次のようなものを検討するかもしれません:
return json_encode(explode(' ', $inputString));
所属していません StackOverflow