例如,我想从这个字符串中的元素创建一个数组:

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

我知道你可以通过爆炸和循环,并修剪:

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

但我觉得有一种方法可以解决这个问题。什么好主意吗?


当前回答

试试这个:

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

其他回答

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

你也可以用一行正则表达式来实现

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

修剪和爆炸

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

$str = 修剪($str);

$strArray = 爆炸(',',$str);

print_r ($ strArray);

下面的代码还处理了输入字符串开始/结束处的空白:

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

这是一个最小的测试,在每个合理的位置都有空白:

$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');