Из этой строки:
$input = "Some terms with spaces between";
как я могу создать этот массив?
$output = ['Some', 'terms', 'with', 'spaces', 'between'];
Вы можете использовать explode
, split
или preg_split
.
explode
использует фиксированную строку:
$parts = explode(' ', $string);
в то время как 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 )
Просто вопрос, но пытаетесь ли вы сделать Json из данных? Если это так, то вы можете подумать над чем-то вроде этого:
return json_encode(explode(' ', $inputString));
Просто подумал, что стоит упомянуть, что регулярное выражение, опубликованное 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 )
Надеюсь, что это поможет любому, кто застрял в подобном препятствии, и смущен тем, почему.