有下面一段HTML代码
<div><table id="draw_list"><thead><tr><td class="td1">开奖日期</td><td class="td2">期号</td><td class="td3">开奖号码</td><td class="td4">本期销量</td></tr></thead><tbody><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070265
 </td><td class="td3"><span class="result"><span class="ball_1">02</span><span class="ball_1">01</span><span class="ball_1">08</span><span class="ball_1">10</span><span class="ball_1">06</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070264
                                </td><td class="td3"><span class="result"><span class="ball_1">05</span><span class="ball_1">06</span><span class="ball_1">07</span><span class="ball_1">04</span><span class="ball_1">10</span></span></td><td class="td4">0</td></tr><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070263
                                </td><td class="td3"><span class="result"><span class="ball_1">05</span><span class="ball_1">10</span><span class="ball_1">07</span><span class="ball_1">04</span><span class="ball_1">08</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070262
                                </td><td class="td3"><span class="result"><span class="ball_1">08</span><span class="ball_1">11</span><span class="ball_1">09</span><span class="ball_1">03</span><span class="ball_1">06</span></span></td><td class="td4">0</td></tr><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070261
                                </td><td class="td3"><span class="result"><span class="ball_1">03</span><span class="ball_1">02</span><span class="ball_1">05</span><span class="ball_1">01</span><span class="ball_1">09</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070260
                                </td><td class="td3"><span class="result"><span class="ball_1">04</span><span class="ball_1">07</span><span class="ball_1">10</span><span class="ball_1">01</span><span class="ball_1">03</span></span></td><td class="td4">0</td></tr><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070259
                                </td><td class="td3"><span class="result"><span class="ball_1">07</span><span class="ball_1">01</span><span class="ball_1">06</span><span class="ball_1">10</span><span class="ball_1">04</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070258
                                </td><td class="td3"><span class="result"><span class="ball_1">03</span><span class="ball_1">09</span><span class="ball_1">10</span><span class="ball_1">01</span><span class="ball_1">11</span></span></td><td class="td4">0</td></tr><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070257
                                </td><td class="td3"><span class="result"><span class="ball_1">03</span><span class="ball_1">11</span><span class="ball_1">02</span><span class="ball_1">10</span><span class="ball_1">07</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070256
                                </td><td class="td3"><span class="result"><span class="ball_1">08</span><span class="ball_1">04</span><span class="ball_1">06</span><span class="ball_1">07</span><span class="ball_1">09</span></span></td><td class="td4">0</td></tr><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070255
                                </td><td class="td3"><span class="result"><span class="ball_1">03</span><span class="ball_1">11</span><span class="ball_1">10</span><span class="ball_1">05</span><span class="ball_1">04</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070254
                                </td><td class="td3"><span class="result"><span class="ball_1">10</span><span class="ball_1">07</span><span class="ball_1">08</span><span class="ball_1">09</span><span class="ball_1">11</span></span></td><td class="td4">0</td></tr><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070253
                                </td><td class="td3"><span class="result"><span class="ball_1">03</span><span class="ball_1">11</span><span class="ball_1">02</span><span class="ball_1">05</span><span class="ball_1">08</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070252
                                </td><td class="td3"><span class="result"><span class="ball_1">07</span><span class="ball_1">02</span><span class="ball_1">01</span><span class="ball_1">05</span><span class="ball_1">03</span></span></td><td class="td4">0</td></tr><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070251
....
....
其实抽出来有规律重复的,整理下,也就是下面这样的:<tr class="bgcolor1">
<td class="td1">2011-07-02</td>
<td class="td2">11070263</td>
<td class="td3"><span class="result">
<span class="ball_1">05</span>
<span class="ball_1">10</span>
<span class="ball_1">07</span>
<span class="ball_1">04</span>
<span class="ball_1">08</span>
</span>
</td>
<td class="td4">0</td>
</tr>
<tr class="bgcolor2">
<td class="td1">2011-07-02</td>
<td class="td2">11070262</td>
<td class="td3"><span class="result">
<span class="ball_1">08</span>
<span class="ball_1">11</span>
<span class="ball_1">09</span>
<span class="ball_1">03</span>
<span class="ball_1">06</span>
</span></td>
<td class="td4">0</td>
</tr>我希望将这些红色部分的取出来,并组成一个数组。
这个数组如果是 $a,那么它的值是:
$a = array (
   [0] => (
      ['datetime'] => 11070263,
      ['num']      => 05,10,07,04,08
   ),
   [1] => (
      ['datetime'] => 11070262,
      ['num']      => 08,11,09,03,06
   )
......
.....
.....
.....
....
)

解决方案 »

  1.   


    $str= <<< HTML<div><table id="draw_list"><thead><tr><td class="td1">开奖日期</td><td class="td2">期号</td><td class="td3">开奖号码</td><td class="td4">本期销量</td></tr></thead><tbody><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070265
     </td><td class="td3"><span class="result"><span class="ball_1">02</span><span class="ball_1">01</span><span class="ball_1">08</span><span class="ball_1">10</span><span class="ball_1">06</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070264
                                    </td><td class="td3"><span class="result"><span class="ball_1">05</span><span class="ball_1">06</span><span class="ball_1">07</span><span class="ball_1">04</span><span class="ball_1">10</span></span></td><td class="td4">0</td></tr><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070263
                                    </td><td class="td3"><span class="result"><span class="ball_1">05</span><span class="ball_1">10</span><span class="ball_1">07</span><span class="ball_1">04</span><span class="ball_1">08</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070262
                                    </td><td class="td3"><span class="result"><span class="ball_1">08</span><span class="ball_1">11</span><span class="ball_1">09</span><span class="ball_1">03</span><span class="ball_1">06</span></span></td><td class="td4">0</td></tr><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070261
                                    </td><td class="td3"><span class="result"><span class="ball_1">03</span><span class="ball_1">02</span><span class="ball_1">05</span><span class="ball_1">01</span><span class="ball_1">09</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070260
                                    </td><td class="td3"><span class="result"><span class="ball_1">04</span><span class="ball_1">07</span><span class="ball_1">10</span><span class="ball_1">01</span><span class="ball_1">03</span></span></td><td class="td4">0</td></tr><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070259
                                    </td><td class="td3"><span class="result"><span class="ball_1">07</span><span class="ball_1">01</span><span class="ball_1">06</span><span class="ball_1">10</span><span class="ball_1">04</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070258
                                    </td><td class="td3"><span class="result"><span class="ball_1">03</span><span class="ball_1">09</span><span class="ball_1">10</span><span class="ball_1">01</span><span class="ball_1">11</span></span></td><td class="td4">0</td></tr><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070257
                                    </td><td class="td3"><span class="result"><span class="ball_1">03</span><span class="ball_1">11</span><span class="ball_1">02</span><span class="ball_1">10</span><span class="ball_1">07</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070256
                                    </td><td class="td3"><span class="result"><span class="ball_1">08</span><span class="ball_1">04</span><span class="ball_1">06</span><span class="ball_1">07</span><span class="ball_1">09</span></span></td><td class="td4">0</td></tr><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070255
                                    </td><td class="td3"><span class="result"><span class="ball_1">03</span><span class="ball_1">11</span><span class="ball_1">10</span><span class="ball_1">05</span><span class="ball_1">04</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070254
                                    </td><td class="td3"><span class="result"><span class="ball_1">10</span><span class="ball_1">07</span><span class="ball_1">08</span><span class="ball_1">09</span><span class="ball_1">11</span></span></td><td class="td4">0</td></tr><tr class="bgcolor1"><td class="td1">2011-07-02</td><td class="td2">11070253
                                    </td><td class="td3"><span class="result"><span class="ball_1">03</span><span class="ball_1">11</span><span class="ball_1">02</span><span class="ball_1">05</span><span class="ball_1">08</span></span></td><td class="td4">0</td></tr><tr class="bgcolor2"><td class="td1">2011-07-02</td><td class="td2">11070252
                                    </td><td class="td3"><span class="result"><span class="ball_1">07</span><span class="ball_1">02</span><span class="ball_1">01</span><span class="ball_1">05</span><span class="ball_1">03</span></span></td><td class="td4">0</td></tr>
    HTML;
    //echo $str;preg_match_all('/<tr.+<td\s*class="td2">(.*)<\/td>.+<\/tr>/isU',$str,$arr);
    unset($arr[0][0]);
    unset($arr[1][0]);
    print_r($arr);
    foreach($arr[0] as $v){
         preg_match_all('/<span\s*class="ball_1"[^>]*>(.*)<\/span>/isU',$v,$matches[]);
    }
    print_r($matches);
    foreach(array_values($arr[1]) as $k=>$v1){
        $ar[]=array('datetime'=>$v1,'num'=>join(',',$matches[$k][1]));
    }
    print_r($ar);Array
    (
        [0] => Array
            (
                [datetime] => 11070265
     
                [num] => 02,01,08,10,06
            )    [1] => Array
            (
                [datetime] => 11070264
                                    
                [num] => 05,06,07,04,10
            )    [2] => Array
            (
                [datetime] => 11070263
                                    
                [num] => 05,10,07,04,08
            )    [3] => Array
            (
                [datetime] => 11070262
                                    
                [num] => 08,11,09,03,06
            )    [4] => Array
            (
                [datetime] => 11070261
                                    
                [num] => 03,02,05,01,09
            )    [5] => Array
            (
                [datetime] => 11070260
                                    
                [num] => 04,07,10,01,03
            )    [6] => Array
            (
                [datetime] => 11070259
                                    
                [num] => 07,01,06,10,04
            )    [7] => Array
            (
                [datetime] => 11070258
                                    
                [num] => 03,09,10,01,11
            )    [8] => Array
            (
                [datetime] => 11070257
                                    
                [num] => 03,11,02,10,07
            )    [9] => Array
            (
                [datetime] => 11070256
                                    
                [num] => 08,04,06,07,09
            )    [10] => Array
            (
                [datetime] => 11070255
                                    
                [num] => 03,11,10,05,04
            )    [11] => Array
            (
                [datetime] => 11070254
                                    
                [num] => 10,07,08,09,11
            )    [12] => Array
            (
                [datetime] => 11070253
                                    
                [num] => 03,11,02,05,08
            )    [13] => Array
            (
                [datetime] => 11070252
                                    
                [num] => 07,02,01,05,03
            ))
      

  2.   

     前面来两个print_r忘了注释。楼主自己注释掉。
      

  3.   

    preg_match_all("/<tr.+<td\s*class='td2'>(.*)<\/td>.+<\/tr>/isU",$str1,$aa);
    echo "<pre/>";
    //print_r($aa);
    foreach($aa[0] as $key=>$s)
    {
    preg_match_all("/<span\s*class=\'ball_1\'>(.*)<\/span>/isU",$s,$ss[]);
    }
    $a = array();
    foreach($ss as $key =>$s)
    {
    $a[$key]['datetime'] = $aa[1][$key];
    $a[$key]['num'] = implode(',',$s[1]);
    }
    print_r($a);
      

  4.   

    呃~~这样或许要简单明了一些

    $string = '楼主的字符串';
    $pattern = '@<td\s+class="td2">(?<issue>\d+)</td><td\s+class="td3"><span\s+class="result">(?<number>(?:<span\s+class="ball_1">\d+</span>)*)</span></td>@i';
    preg_match_all($pattern, $string, $matches);
    $data = array(); //楼主要的那个数组
    $pattern1 = '@.*?>(\d+)</span>@is';
    $remlacement1 = '$1,';
    foreach ($matches['issue'] as $k => $v) {
        $num = preg_replace($pattern1, $remlacement1, $matches['number'][$k]);
    $data[$k]['datetime'] = $v;
    $data[$k]['num'] = trim($num, ',');
    }