w3schools uso str ejemplo php explode trim

php - uso - ¿Cómo puedo explotar y recortar el espacio en blanco?



slice php (9)

recortar y explotar

$ str = ''rojo, verde, azul, naranja'';

$ str = trim ($ str);

$ strArray = explotar ('','', $ str);

print_r ($ strArray);

Por ejemplo, me gustaría crear una matriz a partir de los elementos en esta cadena:

$str = ''red, green, blue ,orange'';

Sé que puedes explotar, recorrerlos y recortar:

$arr = explode('','', $str); foreach ($arr as $value) { $new_arr[] = trim($value); }

Pero siento que hay un enfoque de una sola línea que puede manejar esto. ¿Algunas ideas?


Lo siguiente también se ocupa de los espacios en blanco al comienzo / final de la cadena de entrada:

$new_arr = preg_split(''//s*,/s*/'', trim($str));

y esta es una prueba mínima con espacios en blanco en cada posición sensible:

$str = '' first , second , third , fourth, fifth ''; $new_arr = preg_split(''//s*,/s*/'', trim($str)); var_export($str);


Puede hacer lo siguiente usando array_map :

$new_arr = array_map(''trim'', explode('','', $str));


Puedes usar preg_split() para eso.

$bar = preg_split (''/[,/s]+/'', $str); print_r ($bar); /* Result: Array ( [0] => red [1] => green [2] => blue [3] => orange ) */


Respuesta mejorada

preg_split (''/[/s*,/s*]*,+[/s*,/s*]*/'', ''red, green thing ,, ,, blue ,orange'');

Resultado:

Array ( [0] => red [1] => green thing [2] => blue [3] => orange )

Esta

  • Se divide solo en comas
  • Recorta los espacios en blanco de cada elemento.
  • Ignora los artículos vacíos
  • No divide un elemento con espacios internos como "cosa verde"

También puede hacer esto con una línea recta de expresión regular

preg_split(''@(?:/s*,/s*|^/s*|/s*$)@'', $str, NULL, PREG_SPLIT_NO_EMPTY);


prueba esto:

$str = preg_replace("//s*,/s*/", ",", ''red, green, blue ,orange'');


ESPECÍFICAMENTE para la cadena de ejemplo del PO, porque cada subcadena que se emparejará es una sola palabra, puede usar str_word_count() .

Código: ( Demo )

$str = '' red, green, blue ,orange ''; var_export(str_word_count($str,1)); // 1 means return all words in an indexed array

Salida:

array ( 0 => ''red'', 1 => ''green'', 2 => ''blue'', 3 => ''orange'', )

Esto también se puede adaptar para subcadenas más allá de letras (y algunos guiones y apóstrofes, si lee la letra pequeña) agregando los caracteres necesarios a la máscara de personaje / tercer parámetro.

Código: ( Demo )

$str = " , Number1 , 234, 0 ,4heaven''s-sake , "; var_export(str_word_count($str,1,''0..9''));

Salida:

array ( 0 => ''Number1'', 1 => ''234'', 2 => ''0'', 3 => ''4heaven/'s-sake'', )

De nuevo, estoy tratando esta pregunta muy estrechamente debido a la cadena de muestra, pero esto proporcionará el mismo resultado deseado:

Código: ( Demo )

$str = '' red, green, blue ,orange ''; var_export(preg_match_all(''/[^, ]+/'',$str,$out)?$out[0]:''fail'');


$str = str_replace(" ","", $str);