最初の正規表現は適切ですが、変数に対してのみ機能しc
ます。これは、3つの変数すべてに対して機能するバリエーションです。
[ces]=([^;]+);
これにより、c、e、およびs変数が検索されます。
PHPでは、次のように実行できます。
$string = 'c=VAR1; e=VAR2; s=VAR3;';
preg_match_all("/([ces])=([^;]+);/", $string, $out, PREG_PATTERN_ORDER);
$tot = count($out[1]);
for ($i=0;$i<$tot;$i++) {
echo $out[1][$i]; //will echo 'c' , 'e' , 's' respectively
echo $out[2][$i]; //will echo 'VAR1' , 'VAR2' , 'VAR3' respectively
}
更新:コメントでOPの質問に答える
上記のループは、見つかった値を動的に割り当てるためのものであるため、正規表現で4、5、または10個の変数が見つかった場合、forはそれらすべてをループします。ただし、文字列に3つの変数しかないことが確実な場合は、次のように一度に直接割り当てることができます。
$string = 'c=VAR1; e=VAR2; s=VAR3;';
preg_match_all("/([ces])=([^;]+);/", $string, $out, PREG_PATTERN_ORDER);
$$out[1][0] = $out[2][0]; // var $c is created with VAR1 value
$$out[1][1] = $out[2][1]; // var $e is created with VAR1 value
$$out[1][2] = $out[2][2]; // var $s is created with VAR1 value
echo $c; //will output VAR1
echo $e; //will output VAR2
echo $s; //will output VAR3
上記のコードではPHP変数変数を使用しています。