说我有以下字符串:Func(param1, param2)
具有未知数量的参数
我想获得以下数组:
Array(
[0] => Func(param1, param2),
[1] => Func
[2] => param1,
[3] => param2,
...
)
我试过了:
$str = 'Func(param1, param2)';
preg_match('/^([a-z]+)\((?:([a-z0-9]+)\s*,?\s*)*\)$/i', $str, $matches);
print_r($matches);
这就是输出:
Array
(
[0] => Func(param1, param2)
[1] => Func
[2] => param2
)
捕获params的子模式仅捕获最后一个参数。我希望它能捕获所有参数。
有什么想法吗?
修改
我知道我可以捕获所有的参数,然后使用爆炸。但这不是我的问题
我想知道如何使用正则表达式。
答案 0 :(得分:0)
这应该这样做:
$str = 'Func(param1, param2, param32, param54, param293, par13am, param)';
preg_match_all("/(.*)[\(|\](.*)[,|\)]/U", $str, $match);
print_r($match[1]);
//output: Array ( [0] => Func [1] => param1 [2] => param2 [3] => param32 [4] => param54 [5] => param293 [6] => par13am [7] => param )
答案 1 :(得分:-1)
您可以一次获取所有参数,然后使用explode
从该字符串中获取数组:
$str = 'Func(param1, param2)';
preg_match('/^([a-z]+)\(([a-z0-9\,\s]+)\)$/i', $str, $matches);
print_r($matches);
$params = explode(',', str_replace(' ', '', $matches[2]));
print_r($params);