190 votes

Comment puis-je exploser et couper les espaces?

Par exemple, je voudrais créer un tableau à partir des éléments de cette chaîne:

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

Je sais que vous pouvez les exploser et les parcourir en boucle:

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

Mais j’ai le sentiment qu’il existe une approche d’une seule ligne capable de gérer cela. Des idées?

498voto

SeanWM Points 6110

Vous pouvez faire ce qui suit en utilisant array_map :

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

25voto

Diego Perini Points 951

Les éléments suivants traitent également des espaces en début / fin de chaîne d'entrée:

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

et ceci est un test minimal avec des espaces blancs dans toutes les positions sensibles:

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

2voto

Dom Points 391

Vous pouvez aussi le faire avec une regex d'une ligne

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

1voto

Jason OOO Points 1641

essaye ça:

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

0voto

Sutandiono Points 1274

Vous pouvez utiliser preg_split () pour cela.

 $bar = preg_split ('/[,\s]+/', $str);
print_r ($bar);

/* Result:
  Array
  (
      [0] => red
      [1] => green
      [2] => blue
      [3] => orange
  )
 */
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X