区切り文字を含む値には明らかに問題があります。
ただし、キーにこれらの区切り文字を含めることができない限り、これらは賢明に処理できます。秘伝のタレのレシピはこんな感じ。
/(?:,|^)(?=[^,]+=)/
最初に、コンマまたは文字列の先頭のいずれかが存在し、その後に次の等号までコンマがないことをアサートします。実際には、これは特定のキーと値のペアの最後のカンマで分割されます。
次に、結果をループして、最初の等号で分割します。
したがって、最終的には次のようになります(明らかに、選択した言語に翻訳されています。私はPHPを使用しましたが、重要なのはロジックです):
<?php
$str = 'Variable1=somevalue1,Variable2=somevalue2,Variable3=some,value2';
$result = [];
foreach (preg_split('/(?:,|^)(?=[^,]+=)/', $str, -1, PREG_SPLIT_NO_EMPTY) as $item) {
$item = explode('=', $item, 2);
$result[$item[0]] = isset($item[1]) ? $item[1] : '';
}
print_r($result);
生成するもの:
Array
(
[Variable1] => somevalue1
[Variable2] => somevalue2
[Variable3] => some,value2
)
動いているのを見る