これは私の文字列です:
(name1=value1),(name1=value1a,value1b,value1c),(name2=value2),...
括弧内の文字列が必要です。これらを意味します:
name1=value1
name1=value1a,value1b,value1c
name2=value2
など...括弧内には ( および ) を除く任意の文字を使用できることに注意してください。
これは私の文字列です:
(name1=value1),(name1=value1a,value1b,value1c),(name2=value2),...
括弧内の文字列が必要です。これらを意味します:
name1=value1
name1=value1a,value1b,value1c
name2=value2
など...括弧内には ( および ) を除く任意の文字を使用できることに注意してください。
純粋な正規表現の回答が必要な場合は、先読み/後読みアサーションを使用できます。
preg_match_all("/(?<=\().*(?=\))/U", $text);
これの意味は:
(?<=\() A '(' character at the beginning
.* Anything
(?=\)) A ')' character at the end
そしてU
最後の は「貪欲」ではないことを意味します。つまり、最初と最後の括弧内のすべてに一致するわけではありません。
コードは次のとおりです。
$text = "(name1=value1),(name1=value1a,value1b,value1c),(name2=value2)";
preg_match_all("/(?<=\().*(?=\))/U", $text, $matches);
print_r($matches);
そして出力:
Array
(
[0] => Array
(
[0] => name1=value1
[1] => name1=value1a,value1b,value1c
[2] => name2=value2
)
)
を使用した他のソリューションは次のexplode()
とおりです。
<?php
$str="(name1=value1),(name1=value1a,value1b,value1c),(name2=value2)";
$str = substr($str, 1, -1);
$results=explode('),(', $str );
?>
出力:
Array
(
[0] => name1=value1
[1] => name1=value1a,value1b,value1c
[2] => name2=value2
)