¿Cómo puedo convertir una oración a un conjunto de palabras?
Pregunta
De esta cadena:
$input = "Some terms with spaces between";
¿Cómo puedo producir esta matriz?
$output = ['Some', 'terms', 'with', 'spaces', 'between'];
Solución
Puede usar explode
, split
o preg_split
.
explode
utiliza una cadena fija:
$parts = explode(' ', $string);
mientras split
y preg_split
usan una expresión regular:
$parts = split(' +', $string);
$parts = preg_split('/ +/', $string);
Un ejemplo en el que la división basada en expresiones regulares es útil:
$string = 'foo bar'; // multiple spaces
var_dump(explode(' ', $string));
var_dump(split(' +', $string));
var_dump(preg_split('/ +/', $string));
Otros consejos
$parts = explode(" ", $str);
print_r(str_word_count("this is a sentence", 1));
Resultados en:
Array ( [0] => this [1] => is [2] => a [3] => sentence )
Pensé que valdría la pena mencionar que la expresión regular que Gumbo publicó & # 8212; aunque es más que probable que la mayoría de & # 8212; no pueda detectar todos los casos de espacios en blanco. Un ejemplo: usar la expresión regular en la respuesta aprobada en la siguiente cadena:
$sentence = "Hello my name is peter string splitter";
Me proporcionó el siguiente resultado a través de print_r:
Array
(
[0] => Hello
[1] => my
[2] => name
[3] => is
[4] => peter
[5] => string
[6] => splitter
)
Donde, cuando se usa la siguiente expresión regular:
preg_split('/\s+/', $sentence);
Me proporcionó la siguiente salida (deseada):
Array
(
[0] => Hello
[1] => my
[2] => name
[3] => is
[4] => peter
[5] => string
[6] => splitter
)
Espero que ayude a alguien atrapado en un obstáculo similar y esté confundido en cuanto a por qué.
Solo una pregunta, pero ¿estás tratando de sacar a Json de los datos? Si es así, entonces podrías considerar algo como esto:
return json_encode(explode(' ', $inputString));