使用括号和无括号分解字符串

时间:2013-08-25 19:57:13

标签: php

我的价值看起来像这样......

{X}{Y}{Z}{R}{R}

我有2个问题,第一个问题,我怎么能爆炸它所以得到的数组看起来像这样......

Array
(
    [0] => {X}
    [1] => {Y}
    [2] => {Z}
    [3] => {R}
    [4] => {R}
)

第二个问题是,我怎么能像这样爆炸......

Array
(
    [0] => X
    [1] => Y
    [2] => Z
    [3] => R
    [4] => R
)

1 个答案:

答案 0 :(得分:5)

您只需要:

$str = "{X}{Y}{Z}{R}{R}" ;
preg_match_all("/\{([A-Z])\}/", $str,$matches);
print_r($matches);

See Live DEMO

Array
(
    [0] => Array
        (
            [0] => {X}
            [1] => {Y}
            [2] => {Z}
            [3] => {R}
            [4] => {R}
        )

    [1] => Array
        (
            [0] => X
            [1] => Y
            [2] => Z
            [3] => R
            [4] => R
        )

)

说明

这使用正则表达式\{([A-Z])\}。一点一点,这意味着:

  • \{ 匹配文字{
  • (...) 正常匹配内容,但会捕获匹配的任何文字。
    • [A-Z] 匹配AZ之间的任何字符。
  • \} 匹配文字}

我们使用preg_match_all来查找此模式的所有实例。组0是整个匹配(包括大括号),组1仅包含使用括号捕获的数据。