我有以下内容:
(你好) (hello123) (hello123 $ pecialChars&安培;#@)
我需要一种方法来获取每次括号之间的内容。这样做的好方法是什么?
答案 0 :(得分:4)
因为每个()中没有空格,所以下面的模式应该有效\(([^ ]+)\)/
(匹配一个或多个不是空格的任何东西,并且在括号之间,它们被转义为文字字符):
$data = "(hello) (hello123) (hello123$pecialChars&#@)";
preg_match_all('/\(([^ ]+)\)/', $data, $arr, PREG_PATTERN_ORDER);
// print_r($arr) gives:
Array
(
[0] => Array
(
[0] => (hello)
[1] => (hello123)
[2] => (hello123$pecialChars&#@)
)
[1] => Array
(
[0] => hello
[1] => hello123
[2] => hello123$pecialChars&#@
)
)
修改如前所述,模式\(([^)]+)\)
或match an open parenthesis followed by one or more characters that are not a close parenthesis and are followed by a close parenthesis
可能更好(取决于您的数据中是否有右括号或者您可能有空格)。