質問

この文字列から:

$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));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top