PHP使用正则表达式将字符串解析为数组

时间:2015-05-19 15:26:01

标签: php arrays regex string

我有一个这样的字符串:

$msg,array('goo','gle'),000,"face",'book',['twi'=>'ter','link'=>'edin']

我想使用 preg_match_all 将其转换为可能如下所示的数组:

array(
     0 => $msg,
     1 => array('goo','gle'),
     2 => 000,
     3 => "face",
     4 => 'book',
     5 => ['twi'=>'ter','link'=>'edin']
);
  

请注意,所有值均为字符串

我不太擅长正则表达式,所以我无法为此创建模式。多个preg调用也可以。

2 个答案:

答案 0 :(得分:4)

我建议将preg_split与以下正则表达式一起使用:

$re = "/([a-z]*(?:\\[[^]]*\\]|\\([^()]*\\)),?)|(?<=,)/"; 
$str = "\$msg,array('goo','gle'),000,\"face\",'book',['twi'=>'ter','link'=>'edin']"; 
print_r(preg_split($re, $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY));

the sample program的输出:

Array
(
    [0] => $msg,
    [1] => array('goo','gle'),
    [2] => 000,
    [3] => "face",
    [4] => 'book',
    [5] => ['twi'=>'ter','link'=>'edin']
)

答案 1 :(得分:2)

我知道你要求一个正则表达式解决方案,但我今天正在eval()踢:

eval('$array = array('.$string.');');

print_r($array);

另请注意,000不是字符串,会转换为0