1

次の文字列があるとします: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
)

パラメータをキャプチャするサブパターンは、最後のパラメータのみをキャプチャします。そして、すべてのパラメーターをキャプチャーしたいと考えています。

何か案は?

編集:
すべてのパラメーターをキャプチャしてから、爆発を使用できることを知っています。しかし、それは私の質問ではありません。
正規表現でそれがどのように行われるか知りたいです。

4

2 に答える 2

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 )
于 2013-04-29T12:26:47.207 に答える