现远程获取的 html 中包含以下代码:<tbody data="2010-6-20 21:15:00|2010-6-20 23:20:00|CTU|NAY|KN|M|1080||5|7|1,2,32,30,28" 
id="flt30">
<tr>
<td>
<p>21:15&nbsp;双流国际机场</p>
<p>23:20&nbsp;南苑机场</p>
</td>
                                
<td>
<p class="pubFlights_kn">中国联航</p>
<p class="searchresult_fltlist_airline">KN2284</p>
</td>
                                
<td align="middle"><span mod_jmpinfo_page="fltDomestic_planeType.asp?CraftType=738" mod="jmpInfo" cdm="jpi_flighttypeli" class="base_txtdiv">738</span></td><td align="middle">50/40</td><td align="middle"><p><span mod_jmpinfo_content="说明|经济舱全价:1440&lt;BR/&gt;M&nbsp;:经济舱" mod_jmpinfo_page="default_normal.asp" mod="jmpInfo" cdm="jpi_discountdetailli" class="base_txtdiv">7.5折/M</span></p>
<p><span mod_jmpinfo_content="退改签规定|同等舱位免费更改。|需收取票面价10%的退票费。|不得签转。||" mod_jmpinfo_page="flight_policy_tab" mod="jmpInfo" cdm="jpi_refundinfoli" class="base_txtdiv">退改签</span></p></td><td><p><strong class="base_price01">¥1080</strong>经济舱</p>
<p><a class="searchresult_fltlist_down" onclick="FlightUI.showMore(this,GetShowAllSubclassParameter('KN2284 ','flt30'))" title="查看所有价格" href="javascript:void(0);" id="flt_a30" cdm="btn_allpriceli">查看所有价格</a></p>
</td>
                               
<td><div cdm="jpi_noticeli" style="overflow: hidden; width: 124px;">
</div>
/td>
                              
<td align="right" width="145">
<span class="searchresult_fltlist_savemoney" mod_jmpinfo_content="说明|" mod_jmpinfo_page="default_normal" mod="jmpInfo" style="visibility: hidden;" cdm="jpi_explanationli">&nbsp;</span>
<input type="button" style="float: right;" class="base_btn11" onclick="SelectFlight('KN2284', 'M', '1080', 'NormalPrice', '','False')" value="预订" cdm="btn_orderli">
</td>
</tr>
                       
</tbody>其实就是查询机票后获得的页面...
现在想从中获取些有用的内容。也就是:获取那些 id 以“flt”开头的tbody的data属性值, 以及 该tbody 下的所有td所包含的非HTML内容。然后将这些内容存储于一个数组...例如上面的HTML代码。经处理后得到的数组时:
$array = (
"0" => "2010-6-20 21:15:00|2010-6-20 23:20:00|CTU|NAY|KN|M|1080||5|7|1,2,32,30,28",
"1" => "21:15 双流国际机场 23:20 南苑机场",
"2" => "中国联航 KN2284",
"3" => "738",
"4" => "50/40",
"5" => "7.5折/M 退改签",
...
...
)

解决方案 »

  1.   

    总之就是想获得HTML里面的所需要的内容! 
      

  2.   


    这是我已经获取到的html, 现在问题不是再去获取,而是正则表达式去匹配想要的...
      

  3.   


    另外,file_get_contents并不一定处处能行的,有时你必须得用 curl 或 socket 模拟 才能获取的。
      

  4.   


    $html='<tbody data="2010-6-20 21:15:00|2010-6-20 23:20:00|CTU|NAY|KN|M|1080||5|7|1,2,32,30,28" 
    id="flt30">
    <tr>
    <td>
    <p>21:15&nbsp;双流国际机场</p>
    <p>23:20&nbsp;南苑机场</p>
    </td>
                                    
    <td>
    <p class="pubFlights_kn">中国联航</p>
    <p class="searchresult_fltlist_airline">KN2284</p>
    </td>
                                    
    <td align="middle"><span mod_jmpinfo_page="fltDomestic_planeType.asp?CraftType=738" mod="jmpInfo" cdm="jpi_flighttypeli" class="base_txtdiv">738</span></td><td align="middle">50/40</td><td align="middle"><p><span mod_jmpinfo_content="说明|经济舱全价:1440&lt;BR/&gt;M&nbsp;:经济舱" mod_jmpinfo_page="default_normal.asp" mod="jmpInfo" cdm="jpi_discountdetailli" class="base_txtdiv">7.5折/M</span></p>
    <p><span mod_jmpinfo_content="退改签规定|同等舱位免费更改。|需收取票面价10%的退票费。|不得签转。||" mod_jmpinfo_page="flight_policy_tab" mod="jmpInfo" cdm="jpi_refundinfoli" class="base_txtdiv">退改签</span></p></td><td><p><strong class="base_price01">¥1080</strong>经济舱</p>
    <p><a class="searchresult_fltlist_down" onclick="FlightUI.showMore(this,GetShowAllSubclassParameter(\'KN2284 \',\'flt30\'))" title="查看所有价格" href="javascript:void(0);" id="flt_a30" cdm="btn_allpriceli">查看所有价格</a></p>
    </td>
                                   
    <td><div cdm="jpi_noticeli" style="overflow: hidden; width: 124px;">
    </div>
    </td>
                                  
    <td align="right" width="145">
    <span class="searchresult_fltlist_savemoney" mod_jmpinfo_content="说明|" mod_jmpinfo_page="default_normal" mod="jmpInfo" style="visibility: hidden;" cdm="jpi_explanationli">&nbsp;</span>
    <input type="button" style="float: right;" class="base_btn11" onclick="SelectFlight(\'KN2284\', \'M\', \'1080\', \'NormalPrice\', \'\',\'False\')" value="预订" cdm="btn_orderli">
    </td>
    </tr>
                           
    </tbody>';
    $html = preg_replace('/>(\s+)/','>',$html);
    $html = preg_replace('/(\s+)</','<',$html);
    $html = str_replace("\r\n",'',$html);
    $html = str_replace("\t",'',$html);
    echo "<pre>";
    preg_match_all('~<tbody data="(.*?)" id="flt[\d]{1,}"><tr>~is',$html,$data);
    print_r($data[1]);
    preg_match_all('~" id="flt[\d]{1,}"><tr><td><p>(.*?)</p><p>(.*?)</p></td><td><p class="pubFlights_kn">~is',$html,$data);
    print_r($data[1]);
    print_r($data[2]);
    preg_match_all('~<td><p class="pubFlights_kn">(.*?)</p><p class="searchresult_fltlist_airline">(.*?)</p></td><td align="middle">~is',$html,$data);
    print_r($data[1]);
    print_r($data[2]);
    preg_match_all('~mod="jmpInfo" cdm="jpi_flighttypeli" class="base_txtdiv">(.*?)</span></td><td align="middle">~is',$html,$data);
    print_r($data[1]);
    preg_match_all('~</span></td><td align="middle">(.*?)</td><td align="middle"><p>~is',$html,$data);
    print_r($data[1]);
    preg_match_all('~mod="jmpInfo" cdm="jpi_discountdetailli" class="base_txtdiv">(.*?)</span></p><p>~is',$html,$data);
    print_r($data[1]);
    preg_match_all('~mod="jmpInfo" cdm="jpi_refundinfoli" class="base_txtdiv">(.*?)</span></p></td>~is',$html,$data);
    print_r($data[1]);
      

  5.   

    垃圾正则还高手
    /<tbody(?:\s+\w+(?:\s*=\s*(?:\"[^\"]*\"|'[^']*'|[^\"'>\s]+))?)*\s*\/?>\s*<tr>\s*(<td>.*?<\/td>)+\s*<\/tr>\s*<\/tbody>/is