这是我的字符串:
(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
)