本帖最后由 ljydomybest 于 2010-08-23 12:29:49 编辑

解决方案 »

  1.   

    preg_match_all('/<dl class=\"[\s\S]*\">([\s\S])*<\/dl>/im',$str,$tokyo);
    print_r($str);
      

  2.   

    # CunningBoy//不对全文打出了
      

  3.   

    print_r($tokyo[0]);
    dl ..
    ul ..
    div..
    div..
      

  4.   

    xml解析请用dom
    $xml = <<<xml
    <?xml version="1.0" encoding="shift_jis"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head></head><body>
    <div id="wrapper">

    <dl class="tokyo">
    <dt><img src="../image/snav/shop_tokyo_ttl.jpg" alt="搶嫗搒" width="210" height="30" /></dt>
    <dd>
    <a href="/shopguide/shop1.html"><img src="../image/snav/btn_shop1_d.jpg" alt="杮揦乮挰揷乯" width="200" height="25" /></a>
    <a href="/shopguide/shop3.html"><img src="../image/snav/btn_shop3_d.jpg" alt="彫揷媫挰揷揦" width="200" height="25" /></a>
    <a href="/shopguide/shop15.html"><img src="../image/snav/btn_shop11_d.jpg" alt="嫗墹怴廻揦" width="200" height="25" /></a>
    <a href="/shopguide/shop12.html"><img src="../image/snav/btn_shop2_d.jpg" alt="揷墍挷晍揦" width="200" height="25" /></a>
    <a href="/shopguide/shop13.html"><img src="../image/snav/btn_shop4_d.jpg" alt="嬍愳崅搰壆SC揦" width="200" height="25" /></a>
    <a href="/shopguide/shop4.html"><img src="../image/snav/btn_shop6_d.jpg" alt="惞愔嫗墹傾乕僩儅儞揦 " width="200" height="25" /></a>
    <a href="/shopguide/shop7.html"><img src="../image/snav/btn_shop8_d.jpg" alt="埳惃扥晎拞揦 " width="200" height="25" /></a>
    <a href="/shopguide/shop11.html"><img src="../image/snav/btn_shop10_d.jpg" alt="埳惃扥棫愳揦 " width="200" height="25" /></a>
    <a href="/shopguide/shop16.html"><img src="../image/snav/btn_shop12_d.jpg" alt="儖儈僱杒愮廧揦" width="200" height="25" /></a>
    </dd>
    </dl><dl class="chiba">
    <dt><img src="../image/snav/shop_nagoya_ttl.jpg" alt="柤屆壆丒嫗搒丒戝嶃丒恄屗" width="210" height="30" /></dt>
    <dd class="chiba">
    <a href="/shopguide/shop18.html"><img src="../image/snav/btn_shop16_d.jpg" alt="儈僢僪儔儞僪僗僋僄傾揦" width="200" height="25" /></a>
    <a href="/shopguide/shop20.html"><img src="../image/snav/btn_shop20_d.jpg" alt="JR嫗搒埳惃扥揦" width="200" height="25" /></a>
    <a href="/shopguide/shop21.html"><img src="../image/snav/btn_shop21_d.jpg" alt="崅搰壆戝嶃揦" width="200" height="25" /></a>
    <a href="/shopguide/shop102.html"><img src="../image/snav/btn_shop102_d.jpg" alt="恄屗巗撪乮弌揦梊掕乯" width="200" height="25" /></a>
    </dd>
    </dl><dl class="aichi">
    <dt><img src="../image/snav/shop_kaigai_ttl.jpg" alt="奀奜" width="210" height="30" /></dt>
    <dd>
    </dd>
    </dl><dl class="shipment">
    <dt><a href="../shipment/index.html"><img src="../image/snav/shipment_btn.jpg" alt="壍攧傝嬈柋偺偛埬撪" width="210" height="40" /></a></dt>
    <dd class="clear">
    <p class="copy">搶嫗搒丒恄撧愳導偺惢僷儞丒惢壻嬈偺偍媞條傪拞怱偵丄壍攧偵傛傞帺幮僩儔僢僋偵傛傞攝憲丒擺昳傪彸偭偰偍傝傑偡丅</p>
    <p class="space">&nbsp;</p>
    </dd>
    </dl></div>
    </body>
    </html>
    xml;
    $dom  = new DOMDocument();$dom->loadHTML($xml);
    $xpath  = new DOMXPath($dom);$dl     = $xpath->query('//html/body/div[@id="wrapper"]/dl[@class="tokyo"]');foreach($dl as $k=>$v)
    {
    echo htmlspecialchars(simplexml_import_dom($v)->asXML());

    }
      

  5.   

    偶的神啊,我只要?:
    <dl class="tokyo">
    ...</dl><dl class="chiba">
    ...</dl>
      

  6.   

    自己去学习下xpath语法,很方便的。。
    $dom  = new DOMDocument();$dom->loadHTML($xml);
    $xpath  = new DOMXPath($dom);$dl     = $xpath->query('//html/body/div[@id="wrapper"]/dl[@class="tokyo" or @class="chiba"]');foreach($dl as $k=>$v)
    {
    echo $v->tagName.'->'.$v->getAttribute('class')."<br/>------------------------<br/>";
    echo htmlspecialchars(simplexml_import_dom($v)->asXML())."<br/><br/>";

    }
      

  7.   

    preg_match('|<dl class=\"(tokyo)+\">([\s\S])*<\/dl>|im',$str,$tokyo);//这样为什么不对,本地出来好几个dl,uninx服器上出不来?
      

  8.   

    正则不要滥用,有了dom这个专门解析xml的标准,为何不用?
    正则的话,至少你得非贪婪一下吧。
    preg_match('|<dl class=\"(tokyo)+\">([\s\S])*?<\/dl>|im',$str,$tokyo);
      

  9.   

    $dom->loadHTML($xml);//这参数怎么传
      

  10.   

    $dom->loadHtml(file_get_contents('a.html'));
    or 
    $dom->loadHtmlFile('a.html');请翻阅手册,都有。
      

  11.   

    楼上可是我把文件名用变量传进去了出错,preg_match('|<dl class=\"(tokyo)+\">([\s\S])*<\/dl>|im',$str,$tokyo);//怎么同是可以是chiba
    preg_match('|<dl class=\"(tokyo|chiba)+\">([\s\S])*?<\/dl>|im',$str,$tokyo);\\这样出错哇
      

  12.   

    不要用'|'线作为正则的起始结束符
    还有你要获取1个以上的dl闭合,就要用上preg_match_all.preg_match_all('#<dl class=\"((tokyo)|(chiba))\">([\s\S])*?<\/dl>#im',$xml,$tokyo);