从以下内容中匹配:[tag:xxx]
[tag:aaa /]
[tag:bbb $id=1]
[tag:ccc $id=2 $cid=3 /]获取到 xxx
获取到 aaa
获取到 bbb 和 $id=1
获取到 ccc 和 $id=2 $cid=3
这么写不行 /\[tag:(.+?)(?:[\s]*?)([\s\S]*?)(?:[\/]?)\]/i新手让大家见笑了  该怎么写才对呀

解决方案 »

  1.   

    $s =<<< 'TXT'
    [tag:xxx]
    [tag:aaa /]
    [tag:bbb $id=1]
    [tag:ccc $id=2 $cid=3 /]
    TXT;preg_match_all("#\[(\w+:\w+)\s*([^/\]]*)/?]#", $s, $r);
    print_r($r);Array
    (
        [0] => Array
            (
                [0] => [tag:xxx]
                [1] => [tag:aaa /]
                [2] => [tag:bbb $id=1]
                [3] => [tag:ccc $id=2 $cid=3 /]
            )    [1] => Array
            (
                [0] => tag:xxx
                [1] => tag:aaa
                [2] => tag:bbb
                [3] => tag:ccc
            )    [2] => Array
            (
                [0] => 
                [1] => 
                [2] => $id=1
                [3] => $id=2 $cid=3 
            ))
      

  2.   

    噢,要这样$s =<<< 'TXT'
    [tag:xxx]
    [tag:aaa /]
    [tag:bbb $id=1]
    [tag:ccc $id=2 $cid=3 /]
    TXT;preg_match_all("#\[\w+:(\w+)\s*([^/\]]*)/?]#", $s, $r);
    print_r($r);Array
    (
        [0] => Array
            (
                [0] => [tag:xxx]
                [1] => [tag:aaa /]
                [2] => [tag:bbb $id=1]
                [3] => [tag:ccc $id=2 $cid=3 /]
            )    [1] => Array
            (
                [0] => xxx
                [1] => aaa
                [2] => bbb
                [3] => ccc
            )    [2] => Array
            (
                [0] => 
                [1] => 
                [2] => $id=1
                [3] => $id=2 $cid=3 
            ))
      

  3.   

    其实自己写模板引擎或bbcode,完全可以借鉴现成的代码系统