Как я могу преобразовать предложение в массив слов?
Вопрос
Из этой строки:
$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 )
Просто подумал, что стоило бы упомянуть, что регулярное выражение, опубликованное 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));