$str = "[02:55.57][01:04.94]谁在用琵琶弹奏一曲东风破";
$reg ="/(\[\d{2}:\d{2}.\d{2}\])+/iU";
preg_match_all($reg, $str, $out);
print_r ($out[1]);

解决方案 »

  1.   

    $str = "[02:55.57][01:04.94]谁在用琵琶弹奏一曲东风破";
    $reg ="/(\[\d{2}:\d{2}.\d{2}\])+/iU";
    preg_match_all($reg, $str, $out);
    print_r ($out[1]);
      

  2.   

    $str = "[02:55.57][01:04.94]谁在用琵琶弹奏一曲东风破";
    $reg = "/(\[(\d{2}):(\d{2})\.(\d{2})\])+(.*)/iU";
       preg_match_all($reg, $line, $out);
    print_r ($out[1]);
    这样怎么还是不行
      

  3.   

    我现在要得到这样的结果
    $out[1]
    0 => [02:55.57]
    1 => [01:04.94]
    $out[5]
    0=>谁在用琵琶弹奏一曲东风破;
      

  4.   

    <?php
    $str = "[02:55.57][01:04.94]谁在用琵琶弹奏一曲东风破";
    $reg = "/(\[\d{2}:\d{2}\.\d{2}\])/";
    preg_match_all($reg, $str, $out);
    print_r ($out[1]);
    ?>原因如下:
    $reg = "/(\[\d{2}:\d{2}\.\d{2}\])/";
    时,将分别匹配两个[...]成分
    若print_r ($out[1]);可得
    Array
    (
        [0] => Array
            (
                [0] => [02:55.57]
                [1] => [01:04.94]
            )    [1] => Array
            (
                [0] => [02:55.57]
                [1] => [01:04.94]
            )
    )而
    $reg = "/(\[\d{2}:\d{2}\.\d{2}\])+/";
    时,注意后面的+。这个+表示匹配一个以上的相同成分
    此时print_r ($out[1]);可得
    Array
    (
        [0] => Array
            (
                [0] => [02:55.57][01:04.94]
            )    [1] => Array
            (
                [0] => [01:04.94]
            )
    )
      

  5.   

    <?php
    $str = "[02:55.57][01:04.94]谁在用琵琶弹奏一曲东风破";
    $reg = "/(\[\d{2}:\d{2}\.\d{2}\])(\[\d{2}:\d{2}\.\d{2}\])([^[[].+)/";
       preg_match_all($reg, $str, $out);
    print_r ($out);
    ?>
    三个成员都要的话得写成这样
      

  6.   

    应该是print_r ($out);吧??
      

  7.   

    我现在要得到这样的结果
    $out[1]
    0 => [02:55.57]
    1 => [01:04.94]
    $out[5]
    0=>谁在用琵琶弹奏一曲东风破;
    就是前面的数字部分用一个数组来保存,每个元素都是一个类似“[01:04.94]”的字符串。
    而后面的汉字用一个数组来保存,
      

  8.   

    怎么没人回答?这个问题好像不难吧
    我现在还是无法理解,我一开始的输出结果$str = "[02:55.57][01:04.94]谁在用琵琶弹奏一曲东风破";
    $reg ="/(\[\d{2}:\d{2}.\d{2}\])+/i";
    preg_match_all($reg, $str, $out);
    print_r ($out[1]);我原以为$out[1]有两个元素
    0 => [02:55.57]
    1 => [01:04.94]
    现在只有后面一个 是这样
    0 => [01:04.94]
    [02:55.57]不也是符合第一个子模式的吗。为什么数组里没有呢
      

  9.   

    我是这么认为的
    (\[\d{2}:\d{2}.\d{2}\])+这个子模式是一个或多个[xx:xx.xx],也就是说,无论有多少次,只要是两个连在一起的,它都认为是一个的,并且它会输出符合子模式的字符串的最后一个[xx:xx.xx]。