我怎样才能爆炸和修剪空白?

例如,我想从这个string中的元素创build一个数组:

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

我知道你可以爆炸,并通过他们并修剪:

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

但是我觉得有一个可以处理这个问题的方法。 有任何想法吗?

你可以使用array_map来完成以下工作

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

改进的答案

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

结果:

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

这个

  • 仅在逗号分割
  • 修剪每个项目的空格。
  • 忽略空的项目
  • 不要像“绿色的东西”这样的内部空间拆分项目

以下内容也会在inputstring的开始/结尾处处理空格:

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

这是一个最小的testing,在每一个明智的位置上都有空格:

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

尝试这个:

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

你也可以用一行的正则expression式做这个

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

你可以使用preg_split() 。

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

修剪和爆炸

$ str ='红色,绿色,蓝色,橙色';

$ str = trim($ str);

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

的print_r($ strArray);