自己去学习下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/>";
print_r($str);
dl ..
ul ..
div..
div..
$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"> </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());
}
<dl class="tokyo">
...</dl><dl class="chiba">
...</dl>
$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/>";
}
正则的话,至少你得非贪婪一下吧。
preg_match('|<dl class=\"(tokyo)+\">([\s\S])*?<\/dl>|im',$str,$tokyo);
or
$dom->loadHtmlFile('a.html');请翻阅手册,都有。
preg_match('|<dl class=\"(tokyo|chiba)+\">([\s\S])*?<\/dl>|im',$str,$tokyo);\\这样出错哇
还有你要获取1个以上的dl闭合,就要用上preg_match_all.preg_match_all('#<dl class=\"((tokyo)|(chiba))\">([\s\S])*?<\/dl>#im',$xml,$tokyo);