我想以一种不同的方式分解一个变量

php
2022-08-30 17:57:09

我有这个变量。

$var = "A,B,C,D,'1,2,3,4,5,6',E,F";

我想分解它,以便我得到以下数组。

array(
[0] => A,
[1] => B,
[2] => C,
[3] => D,
[4] => 1,2,3,4,5,6,
[5] => E,
[6] => F
);

我用过,但我没有得到我想要的输出。有什么建议吗?explode(',',$var)


答案 1

有一个现有函数可以解析逗号分隔的字符串。函数str_getcsv

它的签名是这样的:

array str_getcsv ( string $input [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\\" ]]] )

您唯一的更改是将第三个变量(即附件)更改为单引号,而不是默认的双引号。

下面是一个示例。

$var = "A,B,C,D,'1,2,3,4,5,6',E,F";
$array = str_getcsv($var,',',"'");

如果是数组,您将获得所需的格式:var_dump

array(7) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "B"
  [2]=>
  string(1) "C"
  [3]=>
  string(1) "D"
  [4]=>
  string(11) "1,2,3,4,5,6"
  [5]=>
  string(1) "E"
  [6]=>
  string(1) "F"
}

答案 2

只需与以下正则表达式一起使用,如下所示preg_match_all

preg_match_all("/(?<=').*(?=')|\w+/",$var,$m);
print_r($m[0]);

正则表达式说明:

  • (?<=').*(?=')捕捉其中的每一个角色'(quotes)
  • |\w+ |(OR)将抓取其余的字符,除了,

演示

正则表达式


推荐