这是我的字符串:
(name1=value1),(name1=value1a,value1b,value1c),(name2=value2),...
我想要括号内的字符串。意思是:
name1=value1
name1=value1a,value1b,value1c
name2=value2
等...请注意,括号内可以是除(和)之外的任何字符。
答案 0 :(得分:2)
如果你想要一个纯粹的RegEx答案,你可以使用lookahead / lookbehind断言:
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
)
)
答案 1 :(得分:0)
以下是使用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
)