从括号中取出内容的最佳方法是什么:(你好)?

时间:2011-07-30 06:23:34

标签: php regex

我有以下内容:

(你好) (hello123) (hello123 $ pecialChars&安培;#@)

我需要一种方法来获取每次括号之间的内容。这样做的好方法是什么?

1 个答案:

答案 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可能更好(取决于您的数据中是否有右括号或者您可能有空格)。